find命令总结

一、命令简介:

  find顾名思义就是查找文件的意思,能在系统中寻找你想要的文件。日常使用Linux系统中可能会经常用到这个命令,非常实用,掌握这个命令的用法会使你的工作更加效率

二、主要语法:

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

参数说明
-name 按名称查找
-size 按大小查找
-user 按文件属主查找
-type 按类型查找
-mtime 按照文件的更改时间查找
-atime 按照文件的访问时间查找
-perm 按照文件权限查找
-regex 按照正则表达查找
  • 一般情况下使用-name选项匹配字符串即可,复杂一点的可以使用正则表达式-regex选项
  • 这里只列举比较常用的选项,具体的其他选项参数可以使用info find 或 man find命令进行查询

三、操作实例:

查找根目录下.c后缀的所有并打印出来

[root@localhost ~]# find / -type f -name "*.c" -print

查找/etc/目录下大于2M的所有文件

find /etc -size +2M

搜索当前目录下七天内被访问过的所有文件

find . -type f -atime -7

找出/var/log下不是以.log结尾的文件

find /var/log/ -type f ! -name '*.log'

找出所有以.py和.sh为后缀的所有文件

find / -regex ".*(.py|.sh)$"

关于-print0 与 xargs -0的原理和用法:

find -print0表示在find的每一个结果之后加一个NULL字符,而不是默认加一个换行符。find的默认在每一个结果后加一个' ',所以输出结果是一行一行的。当使用了-print0之后,就变成一行了

然后xargs -0表示xargs用NULL来作为分隔符。这样前后搭配就不会出现空格和换行符的错误了。选择NULL做分隔符,是因为一般编程语言把NULL作为字符串结束的标志,所以文件名不可能以NULL结尾,这样确保万无一失。

推荐用法:

find / -name "*.txt" -print0 | xargs -0 rm
原文地址:https://www.cnblogs.com/ashjo009/p/12199352.html