命令格式:find path -option [ -print ] [ -exec -ok command ] {} ;
默认路径是当前目录;默认表达式是 -print
表达式可能包括:运算符、选项、测试和操作:
示例:find . -name “*.txt”
参数列表
运算符(降低优先级;-并且在没有给出其他的情况下是隐式的):
(EXPR)! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 - 或 EXPR2 EXPR1 , EXPR2
位置选项(始终为真):-daystart -follow -regextype
普通选项(始终为真,在其他表达式之前指定):
-depth --help -maxdepth 级别 -mindepth 级别 -mount -noleaf
--version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race
测试(N 可以是 +N 或 -N 或 N): -amin N -anewer FILE -atime N -cmin N
-cnewer 文件 -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
-可读 -可写 -可执行
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls]
-context 上下文
操作: -delete -print0 -printf FORMAT -fprintf 文件格式 -print
-fprint0 文件 -fprint 文件 -ls -fls 文件 -prune -quit
-执行命令; -exec 命令 {} + -ok 命令;
-execdir 命令; -execdir 命令 {} + -okdir 命令;
用法实例
# 匹配当前目录及其子目录文件(正则记得加双引号)
[root@Anjude ~]# find . -name "*.txt"
./file.txt
./test/file.txt
./file2.txt
# 将目前目录其其下子目录中所有一般文件中文件名含有file的列出
[root@Anjude ~]# find . -type f | grep file
./.bash_profile
./file.txt
./test/file.txt
./file2.txt
# 将当前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime -20
# 查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们
find /var/log -type f -mtime +7 -ok rm {} \;
# 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find . -type f -perm 644 -exec ls -l {} \;
# 查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;
# 查找500M以上文件(未验证)
find / -size +500M -print0|xargs -0 du -m|sort -nr