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的默认在每一个结果后加一个'\n',所以输出结果是一行一行的。当使用了-print0之后,就变成一行了
然后xargs -0表示xargs用NULL来作为分隔符。这样前后搭配就不会出现空格和换行符的错误了。选择NULL做分隔符,是因为一般编程语言把NULL作为字符串结束的标志,所以文件名不可能以NULL结尾,这样确保万无一失。
推荐用法:
find / -name "*.txt" -print0 | xargs -0 rm
作者:AshJo
出处:https://www.cnblogs.com/ashjo009/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。