find命令的格式
1、 find命令的一般形式为:find pathname -options [-print -exec -ok ...]
2、 find命令的参数;
-athname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录,递归查找。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}内部无空格,和\;之间含有一个空格分隔符。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
根据文件名搜索
[root@vmax0105 test_shell]# find /tmp/ -name "*.txt"
/tmp/test_shell/a.txt
find也可以用!排除匹配到的模式
[root@vmax0105 test_shell]# find /tmp/test_shell/ ! -name "*.txt" /tmp/test_shell/ /tmp/test_shell/config.xml /tmp/test_shell/test.sh
[root@vmax0105 test_shell]# find /tmp/ \( -name "*.txt" -o -name "*.xml" \) -print
/tmp/test_shell/config.xml
/tmp/test_shell/file.txt
根据文件类型搜索
find支持的文件类型

[root@vmax0105 test_shell]# find . -type d -print . ./dir2 ./dir1
只列出所有文件(包括子目录中的文件)
[root@vmax0105 test_shell]# find . -type f -print ./config.xml ./file.txt ./dir2/dir2.txt ./dir1/dir1.txt ./test.sh
根据文件的时间戳进行搜索
-
访问时间(-atime):用户最近一次访问文件的时间。
-
修改时间(-mtime):文件内容最后一次被修改的时间。
-
变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间。
打印出在最近7天内被访问过的所有文件:find . -type f -atime -7 -print
打印出恰好在7天前被访问过的所有文件:find . -type f -atime 7 -print
打印出访问时间超过7天的所有文件:find . -type f -atime +7 -print
-atime、-mtime以及-ctime都是以“天”为单位来计时的。find命令还支持以“分钟”为计时单位的选项。这些选项包括:
- -amin(访问时间)
- -mmin(修改时间)
- -cmin(变化时间)
找出比file.txt修改时间更近的所有文件:find . -type f -newer file.txt -print
find命令的时间戳处理选项有助于编写系统备份和维护脚本。
根据文件大小进行搜索
- b:块(512字节)
- c:字节
- w:字(2字节)
- k:千字节(1024字节)
- M:兆字节(1024K字节)
- G:吉字节(1024M字节)
查找大于2KB的文件:find . -type f -size +2k
查找小于2KB的文件:find . -type f -size -2k
查找大小等于2KB的文件:find . -type f -size 2k
根据文件权限和所有权进行搜索
-perm选项:搜索特定权限值的文件。
列出具有特定权限的文件:find . -type f -perm 644 -print
-user 按照文件属主来查找文件。-group 按照文件所属的组来查找文件。
find . -type f -user root -print