{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如何使用Find命令在Linux中查找文件?

weizxweizx 回答0 收藏1
收藏问题

1条回答

gxyz

gxyz

回答于2022-06-28 10:09

说起find这个命令很基础也很重要,用好了可以干很多事情,参数也很多,笔者也不一一赘述,挑常用的说说。

find 格式:


用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [ path...] [expression]

主要部分find 后紧跟要搜索的目录,比如搜索/usr 就是find /usr

关于参数我就说几个比较重要的:

1、-type 用于搜索的类型,比如d为目录 ,l 为软链接,f 为文件,f用的多。

比如搜索/usr的文件,就是:

find /usr -type f

这个的好处是去除了搜索结果中的目录,默认是带目录的,如果不慎重再做进一步操作(-exec),如删除时候会误删除,小编的血的教训。所以不论任何时候都加上-type f

2、-name xxx 搜索文件名,这个最常用。为啥呢,搜索文件名呀,都是用这个。注意的时候这个地方的名称是支持泛查询的,比如要查询python原文件,可以用:

find /usr/ -type f -name *.py

结果如下(各个机器可能结果不一样)

3、-mtime n 文件修改时间,类似的有-atime 创建时间 -ctime 访问时间 。为啥这个常用呢,主要用它查文件变化,比如网站目录被篡改了,用这个一查就查的到,虫虫有个一个模块就是基于这个来防止网站被篡改的,我的早期的文章中有写,关注虫虫就能看得到。

比如网站目录中,我们要查找下最近7天内变化的文件,就可以用下面的命令(假设网站更目录为/web):

find /web -type f -mtime -7

注意 -mtime 后面数字n 表示n天 +n表示超过n天 ,-n表示n天内。

4、-perm 根据权限查找,比如

find ~ -perm 0700 查找你当前用户目录下文件权限为用户可读写执行的。

5、-size (+-)n[mkc], 根据文件大小查询,比如查询文件大小为小于10k的

find ~ -size -10k

注意,加减表示大于小于不带的话是恰好,m是兆字节,k是千字节,c字节,这个值和默认ls -l出来大小不带单位的值类似:上面截图展示了,我们搜索大小 5682c的文件,恰好就是ls -al显示出来的大小5682的 .viminfo文件。

其他更多参数就不多说了。

find 和其他命令配合

find 可以和其他命令组合用,比如find搜出来的文件列表,可以用grep 在做下搜索,比如搜索python源文件,还可以用

find /usr -type f |grep ".py"

可以用find生成文件列表,把列表传递个grep 对文件做搜索

比有两个文件 a,b内容如下:我们搜索两个文件中包含hello word的行:

grep "hello word" `find -type f`

搜索包含chongchong的行:

grep "chongchong" `find -type f`注意上面find -type f外面是反引号,表示执行,就是Esc下面那个符号。

借助find可以做很多事情:

比如我们要删除目录下空文件(大小为零的),可以用:

find -type f -size 0 -exec rm {} ;

要删除30天以前的文件用

find -type f -mtime +30 rm {} ;

这个在很多自动化任务脚本中应该有,注意要加上-type f 不然,目录会被误删。

好了关于find 今天就随手写这么多,如果喜欢请关注虫虫,虫虫可以写更多的内容。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<