find命令

1.搜索路径下的所有文件和文件夹


$ find base_path -[print]

2.根据文件名或者正则表达式匹配搜索


-name  指定文件名匹配字符串
-iname  忽略大小写

#找到所有./MyProgram下的txt文件
$ find ./MyProgram -name "*.txt"

#忽略大小写,找到.txt或者.TXT文件
$ find ./MyProgram -iname "*.txt"

#寻找多种匹配文件,-o能支持选择,注意空格
$ find ./MyProgram \( -iname "*.txt" -o -iname "*.sh" \)

-path参数可以使用通配符来匹配文件路径和文件
$ find ./MyProgram -path "*path*" -print

#-regex来指定正则表达式匹配
#找到.sh或者.pdf的匹配文件
$ find ./MyProgram -regex ".*\(.sh\|.txt\)$"

3.否定参数


#查找不是.txt的文件
$ find ./MyProgram! -iname "*.txt"

4.基于目录深度搜索


-maxdepth  指定最大搜索深度
-mindepth  指定最小搜索深度

$ find ./MyProgram -maxpath 1 -type f

5.根据文件类型来搜索


-type 查找某一类型的文件
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。

#寻找目录
$ find ./MyProgram -type d -print

#寻找普通文件
$ find ./MyProgram -type f -print

6.根据文件时间进行搜索

访问时间(-atime):用户最近一次访问文件的时间
修改时间(-mtime):文件最后一次修改的时间
变化时间(-ctime):文件数据单元(权限,所有权)最后一次改变时间
-atime,-mtime,-ctime可作为find的时间参数,单位是天-代表小于,+代表大于

#打印出在最近七天内被访问过的所有文件
$ find ./MyProgram -type f -atime -7 -print

#打印出恰好在七天前被访问过的所有文件
$ find ./MyProgram -type f -atime 7 -print

#打印出在超过七天内被访问过的所有文件
$ find ./MyProgram -type f -atime +7 -print

-amin(访问时间),-mmin(修改时间),-cmin(变化时间)参数都是以为单位
#打印出访问时间超过7分钟的所有文件
$ find ./MyProgram -type f -amin +7 -print

7.根据文件大小的搜索


-size用来指定文件大小
#找出文件大小大于2K的文件
$ find ./MyProgram -type f -size +2k

8.删除匹配的文件
#删除访问时间刚好在7分钟的文件
$ find ./MyProgram -type f -atime 7 -delete

9.基于文件权限和所有权的匹配


-perm 文件权限匹配
-user 文件所有权匹配

#找出文件权限是755的文件打印
$ find ./MyPaogram -type f -perm 755 -print

#找出文件所有权是fire的文件
$ find ./MyProgram -type f -user fire -print

10.结合find执行命令或动作切换


# 找到文件所有权是root的文件并改成所有权属于fire
$ find ./MyProgram -type f -user root -exec chown fire {} \;
#{}在这里是一个特殊的字符,与-exec结合使用,对于每一个匹配的文件{}都会替换成相应的文件名

# 找到所有.c文件并且删除
$ find ./MyProgram -type f -maxdepth 1 -name "*.txt" -exec rm {} \;

标签:Linux

评论已关闭