Linux查找文件方法

前言

locate 命令,快速查找
find 命令,深入查找

find 命令

与 locate 命令不同,find 命令不会在文件数据库中查找文件的记录,而是遍历你的实际硬盘。

根据文件名查找

find -name "test.jpg"

-name 参数指定了文件名字,是 test.jpg,用双引号括起来。不加双引号或者用单引号也是可以的。

find /var/log -name "testlog"
何处:/var/log(及它的子目录);
何物:testlog;
没有指定"做什么"参数,因此 find 命令默认显示了查找到的文件。
find /var/log -name "testlog*"

*(星号)来实现匹配多个名称

在整个硬盘里查找

find / -name "testlog"

根据文件大小查找
我们可以查找 /var 中大小超过 10 MB 的文件(当然你要以 root 身份):

find /var -size +10M

表示查找小于 30 K 的文件:

find /var -size -30k

根据文件的最近访问时间查找

近 7 天里在家目录中访问过 JPG 格式的图片:

find -name "*.jpg" -atime -7

-atime 参数后面紧跟的 -7 表示 7 天之内,减号表示小于。

sudo find . -name "new_file" -type d

如果不用 -type 参数指定类型,那么 find 命令默认是同时查找目录和文件的,加上d就只显示目录。

格式化打印查找结果

sudo find . -name "*.jpg" -printf "%p - %u\n"

我们在 -printf 参数后面写了 “%p - %u\n”,这个格式字符串的意思如下:

%p :文件名;
:就是一个短横;
%u :文件的所有者,这里是我的用户名,所以是 oscar;
\n :用于换行。

删除查找到的文件

find -name "*.jpg" -delete

调用命令
使用 -exec 参数,可以后接一个命令,对每个查找到的文件进行操作。
假设我想要将当前目录下所有查找到的 JPG 文件的访问权限都改为 777,那么我们可以这样做:

find -name "*.jpg" -exec chmod 777 {} \;

就是说对于每个找到的 .jpg 结尾的文件,都进行 -exec 参数指定的操作:

这个操作不必用双引号括起来;
{} 会用查找到的每个文件来替换;
; 是必须的结尾。

locate 命令

这个命令用于定位要查找的文件,而且此命令很快。
查找一个叫做 test_file的文件

locate test_file

刚创建的文件,用 locate 命令查找不到,locate 命令不会对你实际的整个硬盘进行查找,而是在文件的数据库里查找记录。

对于刚创建不久的文件,由于它们还没被收录进文件数据库,因此 locate 命令就找不到其索引,自然就不会返回任何结果。

Linux 系统一般每天会更新一次文件数据库。因此,只要你隔 24 小时再用 locate 查找,应该就能找到你刚创建的文件了。

当然我们也可以用 updatedb 命令强制系统立即更新文件数据库,但是 updatedb 命令只能由 root 用户执行。

sudo updatedb
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值