Linux文件搜索--find命令如何使用

find: 搜索文件

语法格式:
find [options] [查找的起始路径] [查找条件] [处理动作]

  • 查找的起始路径:
    指定具体的搜索目录,默认为当前目录。

  • 查找条件:
    指定查找的标准如,大小,文件名,类型等。默认是指定路径下的所有文件。

  • 处理动作:
    符合查找条件的文件做出的操作,例如cp,rm,默认为输出到标准输出。

1.根据名称查找。

  • -name " "–>根据文件名称查找。
  • -iname " "–>根据文件名称查找忽略文件名称大小写。
  • -regex " "–>匹配路径而不是文件名。
    可以使用通配符:如 find -name “fil.*”

2. 根据文件从属关系查找。

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

例如 :

[root@localhost ~]#find.-user root
//在当前目录中査找所有者是 root 的文件

3.根据文件类型查找.

  • -type +文件类型
[root@localhost ~]#find . -type f
//查找当前目录下的所有普通文件。

文件类型 :
f:普通文件
d:目录
b:块设备文件
l:链接文件
c:字符设备文件
p:管道文件
s:socket套接字文件

4.根据文件的大小查找。

-size [+|-]数字

[root@localhost ~]#find . -size 10
//查找当前目录下大小为10kb的文件。
[root@localhost ~]#find . -size -10
//查找当前目录下大小小于10kb的文件。
[root@localhost ~]#find . -size +10
//查找当前目录下大小大于10kb的文件。

5.根据时间戳查找。

-atime [+|-]数字 : 文件最后访问时间。
-mtime [+|-]数字 : 文件最后修改时间。
-ctime [+|-]数字: 文件最后改变时间。

  • 以天为单位
    例如 :
[root@localhost ~]#find . -atime 10
//查找当前目录下文件最后访问时间是10天前的那一天的文件。
//比如今天11号,找最后访问时间是1号的文件。
[root@localhost ~]#find . -atime -10
//查找当前目录下文件最后访问时间是前10天的文件。
//比如今天11号,找最后访问时间是1号到现在的文件。
[root@localhost ~]#find . -atime +10
//查找当前目录下最后访问时间是10天之前的的文件。
//比如今天11号,找最后访问时间是1号之前的文件。
  • 以分钟为单位
    -amin [+|-]分钟数
    -mmin [+|-]分钟数
    -cmin [+|-]分钟数
    ----->用法与按天数查找相同。

6.根据文件权限来查找.

-perm mode

-perm + mode 精确查找
-perm+ /mode 三方权限中有一方满足即可
-perm+ -mode 三方权限必须都对应满足
[root@localhost ~]#find . -perm 777
//查找当前目录下权限为777的文件。
[root@localhost ~]#find . -perm /777
//查找当前目录下三方权限有一方为777的文件。
[root@localhost ~]#find . -perm -421
//查找当前目录下权限要满足421的文件。权限大于421也可。

7.根据目录层级查找。

-path–> 基于目录层级

基于目录深度查找:

-maxdepth 最大深度
-mindepth 最小深度

[root@localhost ~]#find . -maxdepth 3
//查找当前目录下前三级的所有文件。
[root@localhost ~]#find . -maxdepth 3 -mindepth 3
//查找当前目录下第三级的所有文件。

8.处理动作:

-print 默认动作,输出到标准输出
-fls 将查找到的文件的长格式信息写入到指定文件中
-ok commond {} \ ; 对执行的每个文件做commond操作,每次的操作需要用户确认
-exec commond {} \ ; 对执行的每个文件做commond操作

说明 :{ }中得内容就是前边find命令查找出来的内容,根据需求调整处理动作所需要的命令,然后顺序。

[root@localhost ~]#find . -perm 777 -fls /etc/abc/
//查找当前目录下权限为777的文件,并放入/etc/abc/中。
[root@localhost ~]#find . -type p -ok -exec rm -f {}\;
//查找当前目录下所有管道文件。
//将查找到的文件全部删除,删除前询问是否执行。

9.逻辑运算符。

选项:

  • -a:and逻辑与,两个条件都成立,find 搜索的结果才成立
  • -o:or逻辑或,两个条件只要其中一个成立,find 命令就可以找到结果
  • -not:not逻辑非,也就是取反的意思。
[root@localhost ~]#find . -type b -a -perm 777 
//查找当前目录下,所有块设备文件同时权限为777的文件。
[root@localhost ~]#find . -type b -0 -type f
//查找当前目录下块设备文件或者普通文件。
[root@localhost ~]#find .-not  -type b
//查找当前目录下除过块设备文件的所有文件。
发布了20 篇原创文章 · 获赞 15 · 访问量 1941

猜你喜欢

转载自blog.csdn.net/wdwangye/article/details/104711887