linux unix命令详解,Linux/Unix重要find命令详解

原标题:Linux/Unix重要find命令详解

find(查找)主要沿着文件层次(目录)结构依次向下遍历,匹配符合条件的文件,可以附带执行相应的操作选项,默认的操作结果是打印出符合条件的文件与目录。

主要功能如下(所有测试均在当前目录(test)下开始匹配,搜索):

基本用法

列出给定目录(base_path)下所有的文件和子目录:

find base_path -print

0cdf980fb9981c71651f4d38ba600505.png

补充:根据文件名和正则表达式进行搜索,使用选项 -name或-iname(忽略大小写):

find base_path -name ‘xxx’ -print

find base_path -iname ’xxx‘ -print

684355c29156d2fc106728e5b113548c.png

否定参数,可以用 !排除所指定到的模式

0a73cbe21721da48ae9f974a97eca38e.png

此处将打印出除txt文本文件外的的所有文件。

基于目录深度的搜索

find命令指定遍历完所有的子目录。使用-maxdepth和-mindefth可以限制find命令遍历的目录深度,并且find命令默认不搜索符号链接,可以用-L选项改变这种行为。

b2ac7a8df4c5afa46526beac8ab4ecd8.png

例如-maxdepth的参数为1时,只匹配当前目录下。

a42a4013ea9e1483b9b654ca2718e002.png

-mindepth的参数代表了开始进行匹配的目录到base_path的最短距离。

基于文件类型搜索

使用-type可以指定搜索的文件类型,linux/unix将所有的的一切都视为文件(文件类型有:普通文件f,目录d,符号链接 l,字符设备c,块设备b,套接字s,FIFO-p),使用 -type选项我们能够对文件类型进行过滤。

716a0192dd096fb756e500ce541826e0.png

此处就会只匹配出特定项下的所有普通文件,和目录。

根据文件的时间戳进行搜索

Linux/Unix文件系统中的每一个文件都有三种时间戳,访问时间(-atime),修改时间(-mtime),变化时间(-ctime),单位为天数,用整数指定,数字前加上+,表示大于这个时间;加上-,表示小于这个天数;不加表示刚好这个天数。

a2f85ea4a4a9d5bb12733a84da314ec6.png

此处的文件是我在进行截图之前才创建的,访问,修改,变化时间均小于一天。

当然相应的用分钟作为单位就可以用选项(-amin)(-mmin)(-cmin),如下我们测试修改时间

e676a408eed49764419371792c2e7f39.png

基于文件大小的搜索

find提供了指定文件大小的单位选项进而搜索符合大小文件的功能,这个搜索也常常会让用户感到非常舒服(b:块, c:字节, w:字, k:千字节, M:兆字节, G:吉字节)。

在搜索之前我们先用ls(list)指令来查看下当前目录下的文件信息:

123317c068acb70dce8b9a3ddd6d0dac.png

信息的第五列就是各文件目录的大小(字节),我们通过指定匹配条件来搜索:

9f7f59c24cec826daa9e3856ddd08cce.png

经过测试,在开始目录下,文件类型为普通目录,文件大小大于30个字节的文件就是zl.txt了

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

-perm选项指定了find指匹配指定权限的文件,参数为文件对应的权限码。

我们仍然可参考⑥中的所有文件信息的第一列,此处需要掌握一定关于文件权限的知识。如下我们查找权限为644的普通文件,即用户可读写,组用户可读,其他可读。

60b853f5fca3a0a8f315e13e29c09b5d.png

也可以用选项-user,匹配指定用户所拥有的文件,参数为用户名或者UID

利用find执行相应操作

比如删除文件,使用-delete选项;删除测试目录下所有的.txt普通文件

7964c34ffe75be8d5b80ccdc3178f4bf.png

还可以利用-exec选项结合其他命令对文件进行更高效的操作,更改文件的所属权,复制文件等,find命令使用一对花括号{}代表文件名,对于每一个匹配到的文件,find命令会将{}替换成相应的文件名; 如果-exec的命令有多个参数时,需要注意结尾使用 " ; " 或者 "+",前者表示进行转义,不然系统会以为是find命令的结尾。

我们将测试目录下的所有的.txt文件由用户lihongbo转换到用户litao999,我们必须以root用户进行此操作,chown用于更改权限:

6248afef26eb9860dda259778b0ba1f3.png

指定find跳过特定的目录

使用-prune选项可以跳过我们在搜寻的的一些明显我们不需要的目录

0dc5710f79c4a45283cbe1940d18bab2.png

跳过了./test1目录

需要指出的是:选项出现的先后次序我们也应该考虑到内,因为它会影响到整条命令的执行效率。

提示:本文需要掌握关于ls(list), chown(changeowner)等命令,以及关于Linux/Unix文件系统文件类型和文件权限等知识。

本文地址:https://www.linuxprobe.com/linux-unix-find.html编辑:何云艳,审核员:逄增宝返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值