原文出处:
http://www.tecmint.com/35-practical-examples-of-linux-find-command/comment-page-4/
概述:
find是linux系统下最重要且最常使用的命令之一。你可以使用find命令搜索并定位符合指定条件的文件和目录。Find命令可适用于多种条件的定位搜索,例如权限、用户、用户组、文件类型、日期、文件大小等。
在这篇文章中,我们会分享一些日常实用的find命令实用经验并举例说明。在本文中,我们将会讨论35个最常使用的find命令,分为五个部分由低阶到高阶地介绍find命令的使用。
■第一部分:使用文件名查找
■第二部分:基于权限查找
■第三部分:基于用户及用户组查找
■第四部分:基于日期与时间查找
■第五部分:基于文件大小查找
第一部分:使用文件名查找
1.在当前目录下使用文件名查找。
在当前目录查找所有名为tecmint.txt的文件。
# find . -name tecmint.txt ./tecmint.txt
2.在home目录下查找文件
在/home查找所有名为tecmint.txt的文件。
# find /home -name tecmint.txt /home/tecmint.txt
3.忽略大小写查找
在/home目录下查找所有名为tecmint.txt且不区分大小写。
选项:-iname,忽略大小写查找
# find /home -iname tecmint.txt ./tecmint.txt ./Tecmint.txt
4.查找目录
在根目录下查找名为Tecmint的目录
译者注:选项:-type,根据文件类型查找,后常跟d(目录),f(文件)
# find / -type d -name Tecmint /Tecmint
5.查找php文件
在当前目录查找所有名为tecmint.php的文件
# find . -type f -name tecmint.php ./tecmint.php
6.查找所有以php结尾的文件
在目录中查找所有的php文件
# find . -type f -name "*.php" ./tecmint.php ./login.php ./index.php
第二部分:基于权限查找
7.查找权限为777的文件
查找所有权限为777的文件。
# find . -type f -perm 0777 -print
8.查找权限不是777的文件
查找所有权限不是777的文件。
# find / -type f ! -perm 777
9.查找设置SGID且权限为644的文件
查找所有设置SGID且权限为644的文件
# find / -perm 2644
10.查找具有设有粘滞位且权限为551的文件
查找所有设有粘滞位且权限为551的文件
# find / -perm 1551
11.查找设有SUID的文件
查找所有设有SUID的文件
# find / -perm /u=s
12.查找设有SGID的文件
查找所有设有SGID的文件
# find / -perm /g=s
13.查找只读文件
# find / -perm /u=r
14.查找可执行文件
# find / -perm /a=x
15.查找权限为777的文件并设为644
查找权限为777的文件并使用chmod将其设为644
# find / -type f -perm 0777 -print -exec chmod 644 {} \;
16.查找权限为777的目录并设为755
查找权限为777的目录并使用chmod将其权限设为755
# find / -type d -perm 777 -print -exec chmod 755 {} \;
17.查找后删除单个文件
查找名为tecmint.txt的文件并删除
# find . -type f -name "tecmint.txt" -exec rm -f {} \;
18.查找后删除多个文件
查找以.mp3 或 .txt结尾的文件并删除
# find . -type f -name "*.txt" -exec rm -f {} \; OR # find . -type f -name "*.mp3" -exec rm -f {} \;
19.查找空文件
查找/tmp目录下的空文件
# find /tmp -type f -empty
20.查找空目录
在/tmp目录下查找空目录
# find /tmp -type d -empty
21.查找隐藏文件
# find /tmp -type f -name ".*"
第三部分:基于用户及用户组查找
22.基于用户查找单个文件
在根目录下查找所有者为root且文件名为tecmint.tx的文件
# find / -user root -name tecmint.txt
23.基于用户查找
在/home目录下查找属主为tecmint的文件。
# find /home -user tecmint
24.基于用户组查找
在/home查找所有用户组为Developer的文件
# find /home -group developer
25.查找属于某个用户的特定文件
查找/home目录下属于用户Tecmint且文件结尾带有.txt的文件
# find /home -user tecmint -iname "*.txt"
第四部分:基于日期与时间查找
26.查找最近50天内内容更新过的文件
查找最近50天内改动过的文件
# find / -mtime 50
27.查找最近50天内被访问过的文件
查找50天内被访问过的文件
# find / -atime 50
28.查找最近50-100天内内容更新过的文件
查找距今50-100天改动过的文件
# find / -mtime +50 –mtime -100
29.查找最近1小时内状态发生变化的文件
查找最近1小时内所有状态改变过的文件
# find / -cmin -60
30.查找最近1小时内更改过的文件
查找最近1小时内所有更改过的文件
# find / -mmin -60
31.查找最近1小时内访问过的文件
查找最近1小时内所有被访问过的文件
# find / -amin -60
第五部分:基于文件大小查找
32.查找50M的文件
查找所有大小为50MB的文件
# find / -size 50M
33.查找50M到100MB的文件
查找所有大于50MB且小于100MB的文件
# find / -size +50M -size -100M
34.查找并删除100MB的文件
查找所有100MB的文件并将其删除
# find / -size 100M -exec rm -rf {} \; OR # find / -size 100M -delete
35.查找特定文件并删除
使用一条命令删除所有以.mp3结尾且大于10MB的文件
# find / -type f -name *.mp3 -size +10M -exec rm {} \;
[附加:一些本文未提及的find命令]
1.查找在指定日期前修改过的文件
touch -t 201003160120 some_file find . ! -newer some_file man touch: -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time OR mydate=201003160120 find . -type f -printf "%AY%Am%Ad%AH%AM%AS/:%p\n" | awk -v d="$mydate" -F'/:' '$1 > d{ print $2 }'