原文出处:

http://www.tecmint.com/35-practical-examples-of-linux-find-command/comment-page-4/


概述:

find是linux系统下最重要且最常使用的命令之一。你可以使用find命令搜索并定位符合指定条件的文件和目录。Find命令可适用于多种条件的定位搜索,例如权限、用户、用户组、文件类型、日期、文件大小等。

wKioL1dQQtbgGLX_AAAwCUSjrHs824.png

在这篇文章中,我们会分享一些日常实用的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 }'