Linux find命令的常用选项
find 命令是 Linux 系统中功能强大的文件和目录搜索工具,以下为你详细介绍其常用选项:定位搜索范围
-path:基于文件路径进行搜索,可以使用通配符。例如,搜索/home/user目录下所有路径中包含docs的文件:
find /home/user -path "*/docs/*"
-prune:用于排除某些目录,避免在这些目录中进行搜索。比如,要搜索/home目录,但排除/home/temp目录:
find /home -path "/home/temp" -prune -o -print
这里
-o 是逻辑或运算符,-print 用于打印搜索到的文件路径。按文件基本属性搜索
-name:根据文件名进行搜索,支持通配符。如搜索当前目录下所有以.log结尾的文件:
find . -name "*.log"
-iname:和-name类似,但不区分大小写。例如,搜索所有文件名包含readme的文件,不考虑大小写:
find . -iname "*readme*"
-
-type:依据文件类型进行搜索,常见的文件类型有:f:普通文件d:目录l:符号链接c:字符设备文件b:块设备文件
例如,搜索/var目录下的所有目录:
find /var -type d
按文件时间属性搜索
-mtime:根据文件内容的最后修改时间搜索,时间单位为天。例如,搜索在 7 天前修改过的文件:
find . -mtime +7
+ 表示大于指定时间,- 表示小于指定时间,没有符号则表示等于指定时间。-atime:基于文件的最后访问时间搜索。比如,搜索在最近 3 天内被访问过的文件:
find . -atime -3
-ctime:根据文件的状态(如权限、所有者等)最后改变时间搜索。例如,搜索在 1 天前状态改变过的文件:
find . -ctime 1
按文件大小搜索
-size:根据文件大小进行搜索,单位可以是字节(c)、千字节(k)、兆字节(M)、吉字节(G)等。例如,搜索当前目录下大小大于 10MB 的文件:
find . -size +10M
同样,
+ 表示大于,- 表示小于。逻辑组合选项
-and:逻辑与运算符,默认情况下多个条件之间是逻辑与的关系,也可以显式使用-and。例如,搜索/home目录下文件名以.txt结尾且大小大于 1KB 的文件:
find /home -name "*.txt" -and -size +1k
-or:逻辑或运算符。例如,搜索当前目录下文件名以.txt或.log结尾的文件:
find . -name "*.txt" -or -name "*.log"
-not:逻辑非运算符。例如,搜索当前目录下文件名不以.bak结尾的文件:
find . -not -name "*.bak"
执行操作选项
-exec:对搜索到的文件执行指定的命令。例如,找到所有.pdf文件并将其复制到/backup目录:
find . -name "*.pdf" -exec cp {} /backup \;
{} 代表搜索到的文件,\; 是命令的结束标志。-ok:和-exec类似,但在执行命令前会先询问用户是否执行。例如:
find . -name "*.old" -ok rm {} \;
输出选项
-print:打印搜索到的文件路径,这是find命令的默认动作。例如:
find . -type f -print
-print0:用空字符(\0)分隔输出的文件路径,适用于文件名包含特殊字符(如空格)的情况。例如:
find . -name "*.txt" -print0 | xargs -0 ls -l
浙公网安备 33010602011771号