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 {} \;