Linux find命令:在指定目录中查找文件

语法:
find path -option [ -print ] [ -exec -ok command ] {} \;

实例:
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
$ find . -name “*.c”

1.按照文件名搜索(全名称搜索)

  • -name: 按照文件名搜索;
  • -iname: 按照文件名搜索,不区分文件名大小;
  • -inum: 按照 inode 号搜索;

$ find /-name yum.conf #在目录下査找文件名是yum.conf的文件
/etc/yum.conf

$ touch yum.conf.bak     #建立一个文件yum.conf.bak
$ find /-name yum.conf
/etc/yum.conf
#此处搜索只能找到yum.conf文件,而不能找到 yum.conf.bak 文件

2.按照文件大小搜索

  • -size[+-]大小:按照指定大小搜索文件

$ find.-size 25k
./install.log
#当前目录下,査找大小刚好是25KB的文件,可以找到
$ find .-size -25k
.
./.bashrc
./.viminfo
#搜索小于25KB的文件,可以找到很多文件

3.按照修改时间搜索

  • -atime [+-]时间: 按照文件访问时间搜索
  • -mtime [+-]时间: 按照文改时间搜索
  • -ctime [+-]时间: 按照文件修改时间搜索

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 “[+-]”时间的含义。

  • -5:代表5天内修改的文件。
  • 5:代表前5~6天那一天修改的文件。
  • +5:代表6天前修改的文件。

4.按照权限搜索

  • -perm 权限模式:査找文件权限刚好等于”权限模式”的文件
  • -perm -权限模式:査找文件权限全部包含”权限模式”的文件
  • -perm +权限模式:査找文件权限包含”权限模式”的任意一个权限的文件

[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# touch testl
[root@localhost test]# touch test2
[root@localhost test]# touch test3
[root@localhost test]# touch test4
#建立测试目录,以及测试文件
[root@localhost test]# chmod 755 testl
[root@localhost test]# chmod 444 test2
[root@localhost test]# chmod 600 test3
[root@localhost test]# chmod 200 test4
#设定实验权限。因为是实验权限,所以看起来比较别扭
[root@localhost test]# ll
总用量0
-rwxr-xr-x 1 root root 0 6月 17 11:05 testl -r–r–r– 1 root root 0 6月 17 11:05 test2
-rw——- 1 root root 0 6月 17 11:05 test3
-w——- 1 root root 0 6月 17 11:05 test4
#查看权限

[root@localhost test]#find.-perm 444
./test2
[root@localhost test]#find.-perm 200
./test4
#按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到

[root@localhost test]#find .-perm -200
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限

[root@localhost test]# find .-perm -444
.
./test2 <-此文件权限为444
./test1 <-此文件权限为755
#搜索文件的权限包含444的文件

[root@localhost test]# find .-perm +444
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限。

5.按照所有者和所属组搜索

  • -uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
  • -gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
  • -user 用户名:按照用户名査找所有者是指定用户的文件
  • -group 组名:按照组名査找所属组是指定用户组的文件
  • -nouser:査找没有所有者的文件

 6.按照文件类型搜索

  • -type d:查找目录
  • -type f:查找普通文件
  • -type l:查找软链接文件

7.逻辑运算符

  • -a:and逻辑与
  • -o:or逻辑或
  • -not:not逻辑非

8.其他选项

  • -exec:把 find 命令的结果放入”{}”中,再由命令 2 直接处理。
  • -ok:在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。

[root@localhost test]# find.-perm 444 -exec ls -l {}\;
-r–r–r– 1 root root 0 6月 17 11:05 ./test2
#使用”-exec”选项,把find命令的结果直接交给”ls -l”命令处理

[root@localhost test]# find .-perm 444 -ok rm -rf{}\;
<rm…./test2>?y  <-需要用户输入y,才会执行
#我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下

作者 admin

百度广告效果展示