1、find 命令参数
1)查找文件
find ./ -type f
2)查找目录
find ./ -type d
3)查找名字为test的文件或目录
find ./ -name test
4)查找名字符合正则表达式的文件,注意前面的‘.’(查找到的文件带有目录)
find ./ -regex .so.*.gz
5)查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
find ./ -type d -print -exec ls {} \;
6)查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)
find ./ -type d -ok ls {} \;
7)查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)
find ./ -type d -exec ls {} +
8)查找文件名匹配.c的文件
find ./ -name \.c
9)查找文件更新日时在距现在时刻二天以内的文件
find ./ -mtime -2
10)查找文件更新日时在距现在时刻二天以上的文件
find ./ -mtime +2
11)查找文件更新日时在距现在时刻一天以上二天以内的文件
find ./ -mtime 2
12)查找文件更新日时在距现在时刻二分以内的文件
find ./ -mmin -2
13)查找文件更新日时在距现在时刻二分以上的文件
find ./ -mmin +2
14)查找文件更新日时在距现在时刻一分以上二分以内的文件
find ./ -mmin 2
15)查找文件更新时间比文件abc的内容更新时间新的文件
find ./ -newer abc
16)查找文件访问时间比文件abc的内容更新时间新的文件
find ./ -anewer abc
17)查找空文件或空目录
find ./ -empty
18)查找空文件并删除
find ./ -empty -type f -print -delete
19)查找权限为644的文件或目录(需完全符合)
find ./ -perm 664
20)查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录
find ./ -perm -664
21)查找用户有写权限或者组用户有写权限的文件或目录
find ./ -perm /220 find ./ -perm /u+w,g+w find ./ -perm /u=w,g=w
22)查找所有者权限有读权限的目录或文件
find ./ -perm -u=r
23)查找用户组权限有读权限的目录或文件
find ./ -perm -g=r
24)查找其它用户权限有读权限的目录或文件
find ./ -perm -o=r
25)查找所有者为lzj的文件或目录
find ./ -user lzj
26)查找组名为gname的文件或目录
find ./ -group gname
27)查找文件的用户ID不存在的文件
find ./ -nouser
28)查找文件的组ID不存在的文件
find ./ -nogroup
29)查找有执行权限但没有可读权限的文件
find ./ -executable ! -readable
30)查找文件size小于10个字节的文件或目录
find ./ -size -10c
31)查找文件size等于10个字节的文件或目录
find ./ -size 10c
32)查找文件size大于10个字节的文件或目录
find ./ -size +10c
33)查找文件size小于10k的文件或目录
find ./ -size -10k
34)查找文件size小于10M的文件或目录
find ./ -size -10M
35)查找文件size小于10G的文件或目录
find ./ -size -10G
2、xargs和-exec
使用find命令的-exec
选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但某些系统对exec的命令长度有限制,执行后可能就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这种情况就需要使用xargs命令,特别是与find命令一起使用。
1)-exec的使用
find . -name "*.txt" -exec rm {} \;
2)xargs的使用
find . -name "*.txt" | xargs rm {}
3、查找大文件
使用find命令可以递归查找一个目录中的子目录,查找目录中的大文件。
1)查找所有目录中5个最大的文件
sudo find / -type f -printf "%s\t%p\n" | sort -n | tail -5 | xargs ls -Slh
2)查找所有目录中大于100M的文件
sudo find / -type f -size +100M | xargs ls -Slh
3)查找所有目录中100M和200M之间的文件
sudo find / -type f -size +100M -size +200M | xargs ls -Slh
4、查找并复制home目录及子目录中最近7天的文件
atime
是访问时间戳,最后一次读取文件的时间,mtime
是修改时间戳,文件内容最后一次修改的时间。ctime
是更改时间戳,上次更改文件元数据的时间。例如,其所有权、位置、文件类型和权限设置的修改。
1)使用xargs
sudo find /home -type f -mtime -7 | xargs -I {} cp {} ./cjavapy
注意:
-i
参数直接用 {}
代替管道之前的标准输出的内容;
-I
参数 需要事先指定替换字符。
2)使用-exec
sudo find /home -type f -mtime -7 -exec cp {} ./cjavapy \;
注意:在\
前面必须要有空格。