find命令在众多linux命令中应用广泛,它用于在系统中查找一些具有某种特征的文件
find 的命令一般形式为:
find pathname -options [-print -exec -ok]
其中:
pathname表示查找的路径;
-print 将查找的文件输出到标准输出,就是屏幕上;
-exec 对find匹配出的文件执行shell命令,具体形式为"-exec command {} \;";
-ok 与-exec相同的作用,不过在执行每个命令前,都会让用户选择是否去执行;
find命令查找文件的形式有很多种,它们分别是:
-name 按照文件名查找文件;
用法:find /root -name "*.txt" -print (查找root目录下所有以.txt结尾的文件并输出)
-perm 按照文件的权限查找文件;
用法:find /root -perm 777 -print (查找root目录下权限为777的文件)
-prune 忽略某些目录进行查找;
用法:find /root -name "/root/en" -prune -o print(在root目录下查找并忽略root/en下的的文件)
-user 按照文件属主查找文件;
用法:find /root -user root -print(在root目录下查找文件属主为root的文件)
-group 按照文件所属的组来查找文件;
用法:find /root -group root -print(在root目录下查找用户组为root的文件)
--mtime -n +n 按照文件更改的时间来查找文件;
用法:find /root -mtime -3 -print(查找更改时间在3日内的文件)
find /root -mtime +3 -print (查找更改时间在3日前的文件)
-nogroup:查找不存在/etc/groups 中组的文件,用法与-group类似
-nouser:查找不存在在/etc/passwd中用户的文件,用法与-user类似
-newer file1 ! file2:查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件
-type 查找某一类型的文件,有:b-块设备文件,d-目录文件,c-字符设备文件,p-管道文件,l-符号链接文件,f-普通文件
用法:find /etc -type d -print (查找etc目录下所有的子目录)
使用-exec选项执行命令:find /root -name "a1.txt" -exec ls -l {} \;
下面是一些选项命令的示例:
在root目录下查找名称为a1.txt的文件
在root目录下查找权限为111并且有suid的文件
查找root/en目录下的类型为普通的文件并执行ls -l 命令
查找root/en目录下类型为普通的文件并搜索文件中"helloworld"字串
其中xargs命令的作用是分次获取文件,这样可以避免exec执行时对其命令长度的限制。