文件查找命令find
原创
©著作权归作者所有:来自51CTO博客作者晴笙的原创作品,请联系作者获取转载授权,否则将追究法律责任
find
find [路径] [选项] [表达式] [动作]
find选项
按文件类型查找 -type
按文件类型查找 -type
f:可编辑的文件
d:目录
l:软链接
p:管道文件
s:安全套接字文件
b:块设备文件
c:字符设备文件
举例
[root@localhost <sub>]
[root@localhost </sub>]
602
按文件大小 -size
-size
-:小于
+:大于
Num:精准但是又不精准的匹配
+Num:查找大于指定数字大小文件
-Num:查找小于指定数字大小文件
Num:查找指定数字大小文件
举例
使用find找出(/opt下小于1k的文件)并删除
[root@localhost <sub>]
使用find找出(/opt下小于1k的文件)把它们全部移动到/tmp下
mv 源文件 目标路径
mv -t 目标路径 源文件
root@localhost </sub>]
xargs:
-i:指定数据流的位置,将数据流放入{}中
[root@localhost ~]
按文件名查找-name
-name:严格区分大小写
一般查找文件名的格式
[root@localhost <sub>]
[root@localhost </sub>]
[root@localhost <sub>]
[root@localhost </sub>]
-iname:不区分大小写
[root@localhost ~]
举例会出现的情况
find /tmp -name '*_*' -iname 'zls'
1./tmp/zls
2./tmp/1_zls
3./tmp/zls_2
4./tmp/ZLS
5./tmp/zls1
[root@localhost opt]
/tmp/zls
/tmp/1_zls
/tmp/zls_2
/tmp/ZLS
'*_*'表示匹配_前面和后面的内容 这里用了-iname 查找带有zls的 不区分大小写 所以显示了大小写的zls
[root@localhost opt]
/tmp/1_zls
*zls代表匹配前面带有内容的zls
[root@localhost opt]
/tmp/zls_2
zls*代表匹配zls后面带有内容
[root@localhost opt]
/tmp/1_zls
/tmp/zls_2
*zls*代表匹配前面和后面都带有内容的zls
按时间查找
-atime:文件访问时间差找
-mtime:文件内容创建,修改时间差找
-ctime:文件属性,修改时间差找
Num:查找第N天的文件(不包括今天)
+Num:查找第N天之前的所有文件(不包括今天)
-NUm:查找从今天开始算,7天内的文件
第一种方式:[root@localhost ~]
第二种方式:for i in `seq -w 30`;do date -s 202204$i && touch file-$i;done
[root@localhost opt]
按照文件用户和组查找
-user:查找文件的属主
-nouser:文件没有属主用户的
-group:查找文件的属组
-nogroup:文件没有属组的
多条件组合查找
[root@localhost opt]
[root@localhost opt]
[root@localhost opt]
按权限查找
-perm
[root@localhost <sub>]
[root@localhost </sub>]
[root@localhost <sub>]
622
rw--w--w-
[root@localhost </sub>]
属主权限位,有一个r或者有一个w就满足条件
属组权限位,有一个r就满足条件
其他用户权限位,有一个r就满足条件
按深度查找
-maxdepth
针对目录层级查找
[root@localhost ~]
find动作
-print:打印查找到的内容到终端上(find命令默认就是打印结果 -print)
-ls:查看文件的详细信息 |xargs ls -l 或者 ls -l $(find xxx) 或者 ls -l `find xxx`
-delete:删除查找到的文件(bug跟ls,ls看不见的,也删除不掉)并且只能删除空目录
其他删除方法: |xargs rm -fr 或者 rm -fr $(find xxx) 或者 rm -fr `find xxx`
[root@localhost ~]
find: cannot delete ‘/run/initramfs/state/etc’: Directory not empty
find: cannot delete ‘/etc’: Directory not empty
find: cannot delete ‘/var/tmp/etc’: Directory not empty
-ok:找到文件后,执行后面的bash命令,询问是否要操作
语法:-ok 系统命令 {} \;
find / -type f -name 'file*' -ok mv {} /tmp \;
-exec:找到文件后,执行后面的bash命令
语法:-exec 系统命令 {} \;
find / -type f -name 'file*' -exec mv {} /tmp \;
find多条件