#find命令
在自己的根目录$HOME中查找文件名符合*.txt的文件,波浪号~代表了你的$HOME目录。记住要用引号将文件名模式引起来!
find ~ -name "*.log" -print
想要的当前目录(及子目录中)和/etc目录中查找文件名以一个大写字母开头的文件,可以用:
find . /etc -name "[A-Z]*" -print
想要查找$HOME目录中的文件,可以用:
find ~ -name "*" -print 或 find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
find / -name "*" -print
为了在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
find . -perm 755 -print
如果希望在当前目录下查找所有用户都可读、写、执行的文件(要小心这种情况),在八进制数字前面要加一个横杠-。
find . -perm -007 -print
如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
find /apps -name "/apps/bin" -prune -o -print
在$HOME目录中查找文件属主为dave的文件,可以用:
find ~ -user dave -print
为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。
find /home -nouser -print
为了在/apps目录下查找属于accts用户组的文件,可以用:
find /apps -group accts -print
要查找没有有效所属用户组的所有文件,可以使用nogroup选项。
find / -nogroup -print
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
find / -mtime -5 -print
为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:
find /var/adm -mtime +3 -print
下面给出的find命令能够查找更改时间比文件script.log新但比文件script_new.log旧的文件:
find ~ -newer script.log ! -newer script_new.log -exec ls -l {} \;
假设现在的时间是23:40,希望查找更改时间在两个小时以内的文件,可以首先创建这样一个文件:
touch -t 05042140 hehe.txt
一个符合要求的文件已经被创建;这里我们假设今天是五月四日,而该文件的更改时间是21:40,比现在刚好早两个小时。
现在我们就可以使用find命令的-newer选项在当前目录下查找所有更改时间在两个小时以内的文件:
find . -newer hehe.txt -print
如果要在/etc目录下查找所有的目录,可以用:
find /etc -type d -print
为了在当前目录下查找除目录以外的所有类型的文件,可以用:
find . ! -type d -print
为了在/ e t c目录下查找所有的符号链接文件,可以用:
find /etc -type l -print
为了在当前目录下查找文件长度大于1 M字节的文件,可以用:
find . -size +1000000c -print
为了在/home/apache目录下查找文件长度恰好为100字节的文件,可以用:
find /home/apache -size 100c -print
为了在当前目录下查找长度超过10块的文件(一块等于512字节),可以用:
find . -size +10 -print
从文件系统的根目录开始,查找一个名为CON.FILE的文件。它将首先匹配所有的文件然后再进入子目录中查找。
find / -name "CON.FILE" -depth -print
从当前目录开始查找位于本文件系统中文件名以XC结尾的文件:
find . -name "*.XC" -mount -print
在当前目录中查找所有文件名以. LOG结尾、更改时间在1日以上的文件,并删除它们,只不过在删除之前先给出提示(使用-ok)。
find . -name "*.log" -mtime +1 -ok rm {} \;
按y键删除文件,按n键不删除。
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
find / -type f -size 0 -exec ls -l {} \;
为了查找当前文件系统中的所有目录并排序,可以用:
find . -type d -print -local |sort
使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
在/apps/audit目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
find /apps/audit -perm -7 -print | xargs chmod o-w