2010-05-05 22:05:24     分类: Php
摘要: find顾名思义就是查找,Linux下find命令提供相当多的查找条件,因此功能比较强大,可以在众多文件或目录下查找你想要的任何文件或目录。

基本格式

$ find path -option [-print] [-exec -ok command] {} \;
  • path : 要查找的目录路径,.标识当前目录,/表示系统根目录。
  • -print : 将匹配的文件输出到标准输出。
  • -exec : 对匹配的文件执行该参数所给出的shell命令,相应的命令形式为'command' {} \;,注意{}和\;之间有空格
  • -ok : 和-exec的作用相同,只不过以一种更安全的模式来执行该参数所给出的shell名ing,在执行每一个命令之前,都会给出提示,让用户确定是否执行。

-option参数

1 -name filename

作用:查找名为filename的文件 示例:

# 在 / 中查找所有.md后缀的文件并显示:
$ find  / -name "*.md" -print

# 在 / 中查找所有以2019开头的文件并显示
$ find / -name "2019*" -print

# 在 / 中查找所有以ab开头并且以yz结尾的文件并显示
$ find / -name "ab*yz" -print

# 在 / 中查找以ab或者cd开头的文件并显示
$ find / -name "ab*" -o -name "cd*" -print

2 -perm

作用:按执行权限查找 示例:

# 在 / 下查找权限为755的文件并显示
$ find / -perm 755 -print

3 -user

作用:按所属用户来查找 示例:

# 在 /home/wwwroot 所有属于www用户的文件并显示
$ find /home/wwwroot -user www -print

4 -nouser

作用:查找没有有效所属用户的文件,即该用户在/etc/passwd中不存在 示例:

# 在 /var 中查找无有效属主的文件并显示
$ find /var -nouser -print

5 -uid

作用:按用户ID查找 示例:

# 查找 /mnt 内所属用户ID为501的文件并显示
$ find /mnt -uid 501 -print

# 查找 /mnt 内所属用户ID大于501的文件并显示
$ find /mnt -uid +501 -print

# 查找 /mnt 内所属用户ID小于501的文件并显示
$ find /mnt -uid -501 -print 

6 -group

作用: 按所属分组来查找 示例:

# 在 /usr/local 中查找所有属于nginx分组的文件并显示
$ find /usr/local -group nginx -print

7 -nogroup

作用:查找所属的分组并非有效分组的文件,即分组不在/etc/groups 示例 示例:

# 在 /tmp 中查找分组无效的文件并显示
$ find /tmp -nogroup -print

8 -mtime -mmin

作用: 按文件更改时间查找文件, -mtime 按天 -mmin按分钟 示例:

# 在 /var/logs 中查找3天以内修改的日志文件并显示
$ find -mtime -3 -name "*.log" -print

# 在 /var/logs 中查找3天以前修改的日志文件并显示
$ find -mtime +3 -name "*.log" -print

# 在 /var/logs 中查找30分钟以内修改的日志文件并显示
$ find -mmin -30 -name "*.log" -print

# 在 /var/logs 中查找30分钟以前修改的日志文件并显示
$ find -mmin +30 -name "*.log" -print

9 -atime -amin

作用:按文件访问时间来查找,-atime按天,-amin按分钟 示例:

# 在 /var/logs 中查找3天以内查看的日志文件并显示
$ find -mtime -3 -name "*.log" -print

# 在 /var/logs 中查找3天以前查看的日志文件并显示
$ find -mtime +3 -name "*.log" -print

# 在 /var/logs 中查找30分钟以内查看的日志文件并显示
$ find -mmin -30 -name "*.log" -print

# 在 /var/logs 中查找30分钟以前查看的日志文件并显示
$ find -mmin +30 -name "*.log" -print

10 -ctime -cmin

作用:按文件创建时间来查找,-ctime按天, -cmin按小时 示例:

# 在 /var/logs 中查找3天以内创建的日志文件并显示
$ find -mtime -3 -name "*.log" -print

# 在 /var/logs 中查找3天以前创建的日志文件并显示
$ find -mtime +3 -name "*.log" -print

# 在 /var/logs 中查找30分钟以内创建的日志文件并显示
$ find -mmin -30 -name "*.log" -print

# 在 /var/logs 中查找30分钟以前创建的日志文件并显示
$ find -mmin +30 -name "*.log" -print

11 -newer

作用: find -newer f1 !f2, 查找更改时间逼f1新但比f2旧的文件, 不用两个条件都存在。 示例:

# 在 /var/logs 里查看比20100512.log 更旧的日志文件
$ find /var/logs -name “*.log”-newer !"20100512.log"

# 在 /var/logs 里查看比20100512.log 更旧的 比20090902.log更早日志文件
$find /var/logs -name "*.log" -newer "20090902.log" !"20100512.log"

12 -type

作用:按文件类型查找文件。b-块设备,d-目录,c-字符设备,p-管道,l-符号链接,f-普通文件 示例:

# 在 / 中查找块设备并显示
$ find -type d -print

13 -size

作用:查找长度为n块[或n字节]的文件 示例:

# 在当前文件夹中查找大于1MB的文件
$ find . -size +1000000c -print

# 在当前文件夹中查找长度为100c的文件
$ find . -size 100c -print

# 在当前文件夹中茶渣长度超过10块的文件 1块=512字节
$ find . -size +10 -print

14 -depth

作用:使查找在进入子目录钱线性查找完本目录

15 -fstyle

作用: 查找位于某一类型文件系统中的文件,这些文件系统类型通常可在 /etc/fstab 中找到

16 -mount

作用:查找文件时不跨越文件系统mount点

17 -follow

作用:如遇符号链接文件,就跟踪链接所指的文件

18 -cpio

作用:对匹配的文件使用cpio命令,将他们备份到磁带设备中

19 -prune

作用:忽略某个目录

20 -used

作用:列出文件或目录被改动过之后,在一定时间内被存取过的文件或目录 示例:

# 列出 /home 目录下在文件或目录被改动过之后,在2天内被存取过的文件或目录
$ find /home -used -2

21 -empty

作用:查找大小为0的文件或者空目录

22 -readable

作用:查找可读的文件或目录

23 -writeable

作用:查找可写的文件或目录

24 -executeable

作用: 查找可执行的文件

25 -links

作用:查找硬连接数大于或小于或等于一定和数量的文件或目录 示例:

# 在 /var 中查找硬连接数大于2的文件或目录
$ find /var -links +2 -print

26 -regex

作用:以正则条件查找文件

综合使用示例

# 在 /var/log 中查找7天以前更改的普通文件,并删除且在删除前询问
$ find /var/log -type -f -mtime +7 -ok rm {} \;

# 在 / 根目录下及最多两层深的子目录下查找passwd文件
$ find / -maxdepth 2 -name passwd

# 在当前目录下查找所有名称为非bat.sh的文件
$ find . -not -name "bat.sh"

# 列出当前目录及子目录下5个最大的文件
$ find . -type f -exec ls -s {} \; | sort -n -r | head -5

# 列出当前目录及子目录下5个最小的文件
$ find . -not -empty -type f -exec ls -s {] \; | sort -n | head -5

文章标签: