Linux 查找命令之 find 详解

文章
林里克斯

强大的查找命令,可以在 Linux 中查找你说需要的内容并对内容执行一些特定操作。

实验平台:CentOS 7.7.1908



一、参数详解


1.用法

find  [查找目录] [搜索条件] [具体操作] {} \;

2.参数

-搜索条件

-name file      #查找文件名中包含所给字符串的所有文件
-iname file     #与 -name 差不多,这个是忽略大小写
-user user      #查找指定用户的文件
-nouser         #查找无有效属主的文件,即该文件的属主在 /etc/passwd 中不存在
-group group    #查找指定用户组的文件
-nogroup        #查找无有效所属组的文件,即该文件所属的组在 /etc/groups 中不存在
-amin ±n        #在过去 n 分钟内被读取过
-cmin ±n        #在过去 n 分钟内被修改过
-ctime ±n       #在过去 n 天内状态被修改过的文件
-atime ±n       #在过去 n 天内被访问过的文件
-mtime ±n       #在过去 n 天内被修改过的文件
-anewer file    #比文件 file 更晚被读取过的文件
-cnewer file    #比文件 file 更新的文件
-perm 755       #按照 755 的文件权限来查找文件
-prune          #使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth 选项,那么 -prune 将被 find 命令忽略
-mount          #要查找文件时不跨越文件系统 mount 点
-follow         #如果 find 命令遇到符号链接文件,就跟踪到链接所指向的文件
-not            #非,取反
-a              #并且关系
-o              #或者关系

-type b     #查找类型为 b 的文件
类型包括:
b(块设备文件)
c(字符设备文件)
d(目录文件)
p(命名管道文件
f(普通文件)
l(符号链接文件)
s(socket文件)

-newer file1 ! file2    #查找更改时间比文件 file1 晚但比文件 file2 早的文件

-size n     #文件大小, n 为单位
c(字节)
k(Kb)
M(Mb)
G(Gb)
b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组

-可执行操作

-exec 命令名 {} \; #不需确认执行命令。注意: "{}"代表找到的文件名,"}"与""之间有空格
-print                  #标准输出

二、使用案例


1.在当前目录及其子目录下查找含有 abc 的文件

$ find ./ -name "abc"

2.在当前目录及其子目录下查找用户组是 www ,并且用户组为 root 的文件

$ find ./ -user www -a -group root

3.以 大小 在当前目录及其子目录下查找文件

$ find ./ -size +10M
#查找当前目录及其子目录下大于 10Mb 的文件

$ find ./ -size -10M
#查找当前目录及其子目录下小于 10Mb 的文件

$ find ./ -size 10M
#查找当前目录及其子目录下大约是 10Mb 的文件

$ find ./ -size +10M -size -100M
#查找当前目录及其子目录下大于 10Mb 的文件且小于 100Mb 的文件

4.在当前目录及其子目录下查找文件类型是 块设备 的文件

$ find ./ -type b

5.在当前目录及其子目录下查找大于 2M 的文件并删除他们

$ find ./ -size +2M -exec rm -rf {} \;
#谨防删根,莫带 -rf

6.在当前目录及其子目录下删除不是 js 的文件

$ find ./ -not -name "*.js" -exec rm -r {} \;

7.查找 /var/log 目录中更改时间在7日以前的普通文件,并在删除之前询问它们

$ find /var/log -type f -mtime +7 -ok rm {} \;

8.在当前目录及其子目录下查找系统中的每一个普通文件,然后使用 xargs 命令来测试它们分别属于哪类文件

$ find . -type f -print | xargs file

9.在当前目录及其子目录下删除文件大小为 的文件

$ find ./ -size 0 | xargs rm
$ find ./ -size 0 -exec rm {} \;
$ find ./ -type f -empty | xargs rm

10.在当前目录及其子目录下查找没有 777 权限的文件

$ find -type f ! -perm 777

11.在当前目录及其子目录下查找后缀为 .mp3 的文件,且不包含目录

$ find ./ -name "*.mp3" -type f

12.在当前目录及其子目录下查找所有可执行文件

$ find ./ -perm /a=x -type f

Over ~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

1148 0 2020-10-14


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-12-28

今日天气
站点统计
  • 文章总数:241篇
  • 分类总数:29个
  • 评论总数:12条
  • 本站总访问量 353827 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!