介绍
find命令的工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
选项
-print:指明打印出匹配文件的文件名(路径)。当使用-print时,‘\n‘作为用于分隔文件的定界符
-print0:指明使用‘\0‘作为定界符来打印每一个匹配的文件名。当文件名中包含换行符时,这个方法就有用武之地了
-name:指定文件名所必须匹配的字符串。支持通配符
find /home/dd -name "*.txt" -print
-iname:-name忽略大小写
-path:匹配路径,支持通配符。
find . -path "*www*"
-perm:指定权限
-regex:使用正则表达式来匹配文件
find . -regex ".*\(\.py\|\.sh\)$"
-iregex:-regex忽略大小写
-maxdepth:指定查找最大深度目录
find . -maxdepth 1 -type f -print
-mindepth:指定从第几深度目录开始查找
运算符
( expr ):Force precedence.
expr1 expr2
Two expressions in a row are taken to be joined with an implied "and"; expr2 is not evaluated if expr1 is false.
find . -name ‘1.txt‘ -type f -user ‘pdd‘
! expr:逻辑非
find ! -name ‘tmp‘
expr1 -a expr2:逻辑与,默认选项
Same as expr1 expr2.
expr1 -o expr2:逻辑或
Or; expr2 is not evaluated if expr1 is true.
find . \( -name "*.txt" -o "*.pdf" \) -print
-type: 指定查找文件的类型
b 块设备
c 字符设备
d 目录
f 普通文件
l 符号链接
p FIFO
s 套接字
根据文件时间进行搜索(-{a,m,c}time以天为计量单位,-{a,m,c}min以分钟为计量单位)
访问时间(-atime,-amin):用户最近一次访问文件的时间
修改时间(-mtime,-mtime):文件内容最后一次被修改的时间
变化时间(-ctime,-cmin):文件元数据(metadata,例如权限或所有权)最后一次改变的时间
find . -type f -atime -7 -print # 最近七天内被访问过的文件
find . -type f -atime 7 -print # 恰好七天前被访问过的文件
find . -type f -atime +7 -print # 访问时间超过七天的文件
-size:根据文件的大小进行搜索
b 块(512字节 default)
c 字节
w 字(2字节)
k 千字节
M 兆字节
G 吉字节
find . -type f -size +2k # 大于2KB的文件
find . -type f -size -2k # 小于2KB的文件
find . -type f -size 2k # 等于2KB的文件
-delete:删除查找到的匹配文件
-user(可以是用户名或UID):查找特定用户所拥有的文件
-exec command {} \;:与其他命令进行结合
find . -type f -user root -exec chown www {} \;
在这个命令中,{}是一个特殊的字符串,与-exec选项结合使用。对每一个匹配的文件,{}会变替换成相应的文件名。例如,上述命令找到两个文件test1.txt和 test2.txt,它最终会被解析位chown www test1.txt和chown www test2.txt
-prune:跳过指定的目录
find . -path ./pdd -prune -o -print