(转)Linux中find命令用法全汇总

声明:
本文转载自
作者:马哥Linux运维
链接:https://mp.weixin.qq.com/s/hSbXN9ur11N-yBQkQIligQ
來源:微信公众号
如有侵权,请留言联系作者进行删除

  Linux 查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。
  通过这篇文章,我们以实例的形式分享我们的日常Linux查找命令体验及其用法。在本文中,我们将向您展示Linux中最常用的35查找命令示例。我们将该部分分为五个部分,从基本到提前使用find命令。


  • 第一部分:查找名称查找文件的基本查找命令

  • 第二部分:根据他们的权限查找文件

  • 第三部分:基于所有者和组的搜索文件

  • 第四部分:根据日期和时间查找文件和目录

  • 第五部分:根据大小查找文件和目录


第一部分 - 查找名称查找文件的基本查找命令

1.使用当前目录中的名称查找文件。
在当前工作目录中查找名称为1.sh的文件。

[root@jianshu cm]# find 1.sh 
1.sh
[root@jianshu cm]# 

2.在主目录下查找文件
查找/opt/cm/目录下的名称为2文件。

[root@jianshu cm]# find /opt/cm/ -name 2
/opt/cm/2
[root@jianshu cm]# 

3.使用名称和忽略案例查找文件
找到当前目录下名称为cc.sh的所有文件,并且不区分大小写。

[root@jianshu cm]# find -iname cc.sh
./cc.sh
./Cc.sh
[root@jianshu cm]# 

4.使用名称查找目录
在 / 目录中查找名称为cm的目录。

[root@jianshu opt]# find / -type d -name cm
/opt/cm
[root@jianshu opt]# 

5.使用名称查找sh文件
在当前工作目录中查找名为test.sh的所有sh文件。

[root@jianshu opt]# find -name test.sh 
./cm/test.sh
./test.sh

[root@jianshu opt]# find -type f -name test.sh 
./cm/test.sh
./test.sh
[root@jianshu opt]# 

6.查找目录中的所有sh文件
查找目录中的所有sh文件。

[root@jianshu opt]# find -type f -name "*.sh"
./cm/cc.sh
./cm/1.sh
./cm/Cc.sh
./cm/test.sh
./test.sh
[root@jianshu opt]# ls
cm  test.sh

[root@jianshu opt]# find -name "*.sh"
./cm/cc.sh
./cm/1.sh
./cm/Cc.sh
./cm/test.sh
./test.sh


第二部分 - 根据他们的权限查找文件

7.查找权限为777文件
查找权限为777的所有文件

[root@jianshu cm]# ll
total 4
-rwxrwxrwx 1 root root 4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root 0 Sep 13 09:08 2
-rw-r--r-- 1 root root 0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:13 Cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:48 test.sh
[root@jianshu cm]# find -type f -perm 777 -print
./1.sh
[root@jianshu cm]# 

8.查找没有777权限的文件

[root@jianshu cm]# find -type f ! -perm 777
./cc.sh
./Cc.sh
./test.sh
./2
[root@jianshu cm]# 

9.查找只读文件

[root@jianshu cm]# find / -perm /u=r

10.查找可执行文件

[root@jianshu cm]# find / -perm /a=x

11.查找所有777权限文件,并使用chmod命令将权限设置为644

[root@jianshu cm]# ll
total 4
-rwxrwxrwx 1 root root 4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root 0 Sep 13 09:08 2
-rw-r--r-- 1 root root 0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:13 Cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:48 test.sh
[root@jianshu cm]# find -type f -perm 777 -print -exec chmod 644 {} \;
./1.sh
[root@jianshu cm]# ll
total 4
-rw-r--r-- 1 root root 4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root 0 Sep 13 09:08 2
-rw-r--r-- 1 root root 0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:13 Cc.sh
-rw-r--r-- 1 root root 0 Sep 13 09:48 test.sh
[root@jianshu cm]# 

12.查找所有具有777权限的目录,并使用chmod命令将权限设置为755。

[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 root root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root    0 Sep 13 09:08 2
-rw-r--r-- 1 root root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root    0 Sep 13 09:13 Cc.sh
drwxrwxrwx 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# find / -type d -perm 777 -print -exec chmod 755 {} \;
/opt/cm/test
[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 root root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root    0 Sep 13 09:08 2
-rw-r--r-- 1 root root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root    0 Sep 13 09:13 Cc.sh
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# 

13.查找并删除单个文件
找到一个名为test.c的文件并将其删除

[root@jianshu cm]# find -name "test.c"
./test.c
[root@jianshu cm]# find -name "test.c" -exec rm -f {} \;
[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 root root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root root    0 Sep 13 09:08 2
-rw-r--r-- 1 root root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root    0 Sep 13 09:13 Cc.sh
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# 

14.查找并删除多个文件
查找和删除多个文件,*.txt,然后使用。

[root@jianshu cm]# find -type f -name "*.txt" -exec rm -f {} \;

15.查找所有空文件
在特定路径下查找所有空文件。

[root@jianshu cm]# find / tmp -type f -empty
/sys/kernel/debug/tracing/events/syscalls/sys_enter_fstatfs/enable
[root@jianshu cm]# cat /sys/kernel/debug/tracing/events/syscalls/sys_enter_fstatfs/enable
0

16.查找所有空目录
将特定路径下的所有空目录归档。

[root@jianshu cm]# find /opt/cm/ -type d -empty 
/opt/cm/test
/opt/cm/test1
[root@jianshu cm]# cd /opt/cm/test
[root@jianshu test]# ll
total 0
[root@jianshu test]# 

17.要查找所有隐藏的文件,请使用以下命令。

[root@jianshu test]# find /var/lib/rpm/ -type f -name ".*"
/var/lib/rpm/.dbenv.lock
/var/lib/rpm/.rpm.lock
[root@jianshu test]# cd /var/lib/rpm/
[root@jianshu rpm]# ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername


第三部分 - 基于所有者和组的搜索文件

18.查找基于用户的单个文件
查找所有者为root的 / 目录下名为1.sh的所有或单个文件。

[root@jianshu cm]# find / -user root -name 1.sh
/opt/cm/1.sh
[root@jianshu cm]# 

19 .查找基于用户的所有文件
查找当前目录下属于cm用户的所有文件

[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 cm   root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root cm      0 Sep 13 09:08 2
-rw-r--r-- 1 root root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root    0 Sep 13 09:13 Cc.sh
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# find -user cm
./1.sh
[root@jianshu cm]# 

20..查找基于组的所有文件
查找当前目录下,属于cm组的所有文件

[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 cm   root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root cm      0 Sep 13 09:08 2
-rw-r--r-- 1 root root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 root root    0 Sep 13 09:13 Cc.sh
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# find -group cm
./2

21..查找用户的特定文件
查找当前目录下属于用户cm的所有.sh文件


[root@jianshu cm]# ll
total 12
-rw-r--r-- 1 cm   root    4 Sep 13 09:05 1.sh
-rw-r--r-- 1 root cm      0 Sep 13 09:08 2
-rw-r--r-- 1 cm   root    0 Sep 14 14:24 2.sh
-rw-r--r-- 1 root root    0 Sep 14 14:25 3.sh
-rw-r--r-- 1 cm   root    0 Sep 13 09:13 cc.sh
-rw-r--r-- 1 cm   root    0 Sep 13 09:13 Cc.sh
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test
drwxr-xr-x 2 root root 4096 Sep 13 15:04 test1
-rw-r--r-- 1 root root    0 Sep 13 09:48 test.sh
[root@jianshu cm]# find -user cm -iname "*.sh"
./cc.sh
./2.sh
./1.sh
./Cc.sh
[root@jianshu cm]# 


第四部分 - 根据日期和时间查找文件和目录

22.在根目录下20-50天内修改过的文件

[root@jianshu cm]# find / -mtime +20 -a -mtime -50 -type f
/var/log/sa/sa23
/var/log/sa/sa18
/var/log/sa/sa17
……
/var/log/sa/sar19
/var/log/sa/sar23
/var/log/sa/sa20
/var/log/sa/sa21
/var/log/sa/sa16
/var/log/sa/sar17

23.查找最近1天访问的文件

[root@jianshu cm]# find -atime 1
./cc.sh
./Cc.sh
./test.sh
./2
[root@jianshu cm]# 

24.查找当前目录最近1小时内更改的所有文件

[root@jianshu cm]# find -cmin -60
.
./cc.sh
./3.sh
./2.sh
./1.sh
./Cc.sh
./2
[root@jianshu cm]# 

25.查找当前目录最近1小时内访问的所有文件。

[root@jianshu cm]# find -atime -60
.
./cc.sh
./3.sh
./test
./2.sh
./1.sh
./test1
./Cc.sh
./test.sh
./2
[root@jianshu cm]# 


第五部分 - 根据大小查找文件和目录

26.找到16MB的文件

[root@jianshu ~]# find -size 16M
./clamav-0.99.2.tar.gz
[root@jianshu ~]# du -sh ./clamav-0.99.2.tar.gz
16M ./clamav-0.99.2.tar.gz
[root@jianshu ~]# 

27.查找大小在10MB到20MB之间文件

[root@jianshu ~]# find -size +10M -size -20M
./clamav-0.99.2.tar.gz
[root@jianshu ~]# 

你可能感兴趣的:((转)Linux中find命令用法全汇总)