欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell命令:find查找命令

程序员文章站 2022-04-30 17:23:12
...

一般用法:

find 目录 参数  #按要求列出指定目录及其子目录下的所有文件和目录,指定目录要在参数之前

限定查找文件类型:

find . -type d  #只列出目录
find . -type f  #只列出目录

限定查找目录的深度,仅查找当前目录而不查找子目录深度用1:

find . -maxdepth 1  #只查找当前目录
find . -mindepth 2  #只查找子目录

根据文件名(或目录名)查找:

find . -name "*.txt"  #查找所有名称为*.txt的文件或目录
find . -iname "*.pdf" #忽略大小写查找所有名称为*.txt的文件或目录
find . \( -name "*.txt" -o -name "*.pdf" \)  #OR条件,匹配多个条件中的一个。注意括号用法,注意空格:\( 和 \)。

根据路径名和文件名(或目录名)查找:

find /root -path "/root/t/*.txt"
find /root -ipath "/Root/t/*.txt"  #忽略大小写

基于正则表达式的路径名和文件名(或目录名)查找:

find /root -regex "/Root/t/.*scala"
find /root -iregex "/Root/t/.*s$"  #忽略大小写

否定参数!:

find . ! -name "*.txt"  #查找所有名称不为*.txt的文件或目录

根据文件时间来查找(最后访问时间-atime,最后修改时间-mtime,文件元数据(例如权限或所有权)最后变化时间-ctime),+表示大于,-表示小于,单位为天:

find . -type f -atime -7  #列出最近7天访问过的文件
find . -type f -atime 7   #列出恰好7天前访问过的文件
find . -type f -atime +7  #列出访问时间超过7天的文件
#以下是基于分钟的参数-amin,-mmin,-cmin
find . -type f -amin +3   #列出访问时间超过3分钟的文件

时间比较参数-newer:

find . type f -newer this.txt  #列出比this.txt更新的(更长的修改时间)所有文件

基于文件大小查找-size:

find . -type f -size +2k  #列出大于2KB的文件
find . -type f -size -2M  #列出小于2MB的文件
find . -type f -size 2G   #列出2GB的文件
find . -type f -size +2c  #列出大于2B的文件
##若计数值是1的时候不准确(如1k),所以转换单位(比如转为1024c)

-delete选项,删除查找到的所有文件:

find . -type f -name "*.txt" -delete  #删除所有txt文件

-exec选项,利用find的结果执行其他命令:

find . -type f -name "*.txt" -exec cat {} \; > /root/all.txt  #将所有txt文件合并到all.txt里,注意输出文件最好不要是被查找到的文件之一
find . -type f -name "*.txt" -exec ls -hl {} \;  #用ls列出所有查到的文件的信息

列出当前目录下所有文件(和目录),不包括abc目录下的(和abc目录本身):

find . \( -name "abc" -prune \) -o \( -print \)