Find:实时查找工具,通过搜索指定起始路径下文件系统各个层级完成查找。
1. 语法:find path option 处理动作
1). 选项/option
按名字查找:
-name “pattern”
eg:find /root -name hello.txt
-iname “pattern”:与name相同
eg:find . ( -name "*.txt" -o -name "*.pdf" ) -print
按文件大小查找:
-size [+/-]num
eg:find /mnt -size +10M
*
按文件类型查找:
-type TYPE
类型:f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
按深度查找:
-depth:在查找文件时,先查找当前目录的文件,再在其子目录中查找
-mindepth num:最少多少层
eg:find / -mindepth 5 -name passwd
-maxdepth num:最多多少层
eg:find /tmp -mindepth 4 -maxdepth 4
按时间查找:
-atime TIME:在多长时间内被访问过的文件
-amin
-mtime TIME:在多长时间内内容修改过的
-ctime TIME:在多长时间内变化过的(元数据或权限变化)文件
根据权限查找:
-perm [/|-]mode
eg:find -type f -perm 644 -print
其他查找方式:
-user username:查找属主指定用户的所有文件;
eg:find . -type f -user weber -print
-group grpname:查找属组指定组的所有文件;
-uid UID:查找属主指定UID的所有文件;
-gid GID:查找属组指定GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
-iregex :忽略大小写
-regex:区分大小写*(find . -regex ".(.txt|.pdf)$")
2). 处理动作:
输出至标准输出;默认的动作
-print
eg1:find / -name file -print
eg2:find . -type f -user weber -print
强大的exec
显示文件的大小
eg:find . -name file1 -exec du -h {} \;
eg:find / -type f -user root -exec chown weber {} ;
找到文件全都copy到另一个目录
eg.find . -type f -mtime +10 -name "*.txt" -exec cp {} ODL ;
删除
eg1:find . -size +10M -ok rm -rf {} \;
eg2:find . -type f -name "*.swp" -delete
处理动作参数:
-ls : 类似于对查找的文件执行“ls -l”命令
-delete:删除查找到的文件
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中
注意项
1.支持Glob通配符(只匹配路径名)
[ ],*,?, [^],
2.{}是一个特殊的字符串,对于每一个被匹配的文件,{}会被替换成相应的文件名。
3.tips:如果后续要执行多个命令,则写成一个脚本,然后exec调用时执行脚本即可。
4.-print的定界符:默认使用“作为文件的定界符;-print0使用”作为文件的定界符,这样就可以搜索包含空格的文件。