From: http://yhj1065.blog.163.com/blog/static/198002172007111810502948/
功能说明:
find指令可以在系统中查找你想要的任何文件或目录,你可以通过不同的参数来查找你想要的。该指令也是系统管理员最常用、最强大、最方便的查找文件和目录的指令。
基本语法:
find path
[-name][-perm][-prune][-user][-group][-mtime][-nogroup][-nouser][-newer][-type]
[-siizen][-depth][-fstype][-mount][-follow][-cpio]
参数说明
参数 |
功能 |
-name |
按照文件名查找文件。 |
-perm |
按照文件权限来查找文件。 |
-prune |
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 |
-user |
按照文件属主来查找文件。 |
-group |
按照文件所属的组来查找文件。 |
-mtime |
+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。Find命令还有-atime和-ctime选项,但它们都和-mtime选项。 |
-nogroup |
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在 |
-nouser |
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 |
-newer file1|file2 |
查找更改时间比文件file1新但比文件file2旧的文件。 |
-type |
b-块设备文件。 d-目录。 c-字符设备文件。 p-管道文件。 l-符号链接文件。 f-普通文件。 |
-sizen[c] |
查找文件长度为n块的文件,带有c时表示文件长度以字节计。 |
-depth |
在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 |
-fstype |
查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件,/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。 |
-mount |
在查找文件时不跨越文件系统mount点。 |
-follow |
如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 |
-cpio |
对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 |
执行范例
在当前目录下找查找以.c的文件和目录
find -name "*.c"
只在当前目录下找查找以.c的文件和目录,子目录不进行查找。
find -maxdepth 1 -name "*.c"
在/home目录查找文件类型为软连接的文件和管道文件,并使用ls指令列出它们的详细信息。
find /home -type p -o -type l |xargs ls -l
查找/home/mail目录下有哪些子目录。
find /home/mail -type d -print
在/home/目录下查找1天前,后缀为.sh的文件。
find /home/ -ctime 1 -name "*.sh" -exec ls -l {} \;
在整个系统中查找,具有硬连接,且大于880KB的文件,并打印出来。
find / -type f ! -links 1 -size +880k -exec ls -lh {} \; 2>/dev/null
查找整个系统中具有setuid的可执行文件。
find / -perm 4755 -print 2>/dev/null|xargs ls -l
查找整个系统中具有setuid的可执行文件。忽略对/bin目录的搜索。
find / -path "/bin" -prune -o -perm 4755 -print 2>/dev/null|xargs ls -l
在/home/目录下查找更改时间在3日以内的文件
find /home/logs -type f -mtime -3 -exec ls -l {} \;
在整个系统中查找属性为755后缀为.sh或.php的文件,并避开/usr/bin、/bin、/usr/local/bin目录。
find / -type f -perm 755 -a -name "*.php" -o -name "*.sh" -a \( -path /bin -o -path /usr/bin -o -path /usr/local/bin \) -prune