Linux 中 find 查找

目录

1.普通查询

 2.按照文件大小查找

3.忽略文件字母大小写查询

 4.根据修改时间查找

 5. 取反 !

 6.根据用户查询

7.对查找出来的内容进行操作


1.普通查询

find + 路径 -name "文件名"

如查看 etc 目录下的passwd 的文件

find /etc -name "passwd"

 

 可以对查找进行文件和深度进行限制

find /etc -maxdepth 1 -type f -name "pa*"
命令  目录  查找深度     类型    文件名包含

#  -type 文件类型:f 表示文件,不指定时,文件和目录都进行查找

# -maxdepth 查找深度:目录层级的意思,不指定时,按最大深度进行查找

# “pa*”: * 表示匹配pa 开头的内容,*号也可以写在开头

 

 Linux 中 find 查找_第1张图片

 2.按照文件大小查找

 单位kMG,k要小写,MG要大写,不带单位就按B单位进行查询

find 目录 -type f -size 文件大小
                        (使用+是大于,使用-是小于)

1)例:查找大于50M的文件

Linux 中 find 查找_第2张图片

 从查询结果中来看,出现一段

find: ‘/proc/1626/task/1626/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/1626/fdinfo/5’: 没有那个文件或目录

因为 proc 是进程目录,有些进程运行起来之后能看到文件的信息,程序运行结束之后,进程文件也随之消失所以看到proc的报错很正常,并且 proc的权限很高,不是一般人可以访问的,所以也经常会报权限不够等错误信息,所以以后看到proc的报错直接忽略即可。

2)查找小于10k 的文件

find /root -type f -size -10k
     路径    文件类型     小于10k

Linux 中 find 查找_第3张图片

 3)查找大于50M同时小于100M的文件

find / -type f -size +50M -and -size +100M

Linux 中 find 查找_第4张图片

3.忽略文件字母大小写查询

find /root -maxdepth 1 -iname "a*"
     路径                 i是ignore的简写,忽略的意思

Linux 中 find 查找_第5张图片

 4.根据修改时间查找

可以使用stat 对文件属性进行查看

stat 文件名

Linux 中 find 查找_第6张图片

 时间参数

按天算    按分钟算

atime       amin   #最近访问时间

mtime      mmin  #文件内容最后一次修改时间

ctime       cmin   #上次更改文件数据的时间,例如其所有权、位置、文件类型和权限设置

 1)时间单位为天 

find /root -type f -mtime -1
     路径            天   “-1 为一天之内,+1为一天以前”

 2)时间单位为分钟

find /root -type f -mmin -40
                         "-是之内,+是之前”

3)查找1天之前,10天之内修改过的文件

find /root -type f -mtime +1 and -mtime -10

 5. 取反 !

1) 在文件名命令前加 !

例 :寻找以 .txt 结尾的文件

find /root -type f -name "*.txt"

寻找不是以.txt 结尾的文件

find /root -type f ! -name "*.txt"

Linux 中 find 查找_第7张图片

 2)如果没有指定文件,取反就成了找文件夹了

在-type 前加 !

find /root ! -type f 
#找root目录下的非文件,即文件夹

Linux 中 find 查找_第8张图片

 6.根据用户查询

根据用户来查找文件

find / -user 用户名

 根据用户组来查找

find / -group 用户名

7.对查找出来的内容进行操作

正常的find语句+操作exec
比如我们查找到文件顺便查看里面的内容
find /root -type f -name "a.txt" -exec cat {} \;
{}表示我们找到的文件,\; 表示:正常exec语句最后要分号结尾,但是分号在linux中有特殊的意义,比如一次性执行两个指令可以 ls - lh; id,这样执行,所以要对; 进行转义,意思是不要将;作为shell指令的分隔符,\就是转义符号。

 

对查找到的文件进行删除

find /root -type f -name "A.txt" -exec rm -f {} \;

 其他操作也一样

你可能感兴趣的:(linux,运维,服务器)