Linux命令-find

语法格式:find 路径 选项 文件名


选项

-name根据文件名查找-nouser查找没有所属用户的文件
-perm根据文件权限查找-nogroup查找没有所属组的用户
-user根据文件所属用户查找

-newer

查找比指定文件更新的文件
-group根据文件所属组查找-type按照文件类型查找
-mtime根据文件最后修改时间查找-size按照文件大小查找
-atime根据文件最后读取时间查找-prune不搜索指定目录
-ctime根据文件属性最后修改时间查找-exec...{}\;对查找出的结果进行处理

常用选项解析

一、根据文件名查找

例:找出/etc目录下的hostname文件

find /etc/hostname -name 'hostname'

例:找出/etc目录下以.conf为结尾的文件

find /etc -name '*.conf'

二、按照时间选项查找

-mtime选项:

  • -mtime +7 :表示7天之前(不包含当天)被修改过的文件
  • -mtime -7:表示7天内被修改过的文件
  • -mtime 7:表示7天之前的当天修改过文件夹

例:找出7天之前/etc目录下以.conf为结尾且被修改的文件

find /etc -mtime +7 -name '*.conf'

三、按照大小查找

例:找出/etc目录下大于100k的文件

find /etc -size +100

四、查找文件的时候指定最多找多少层目录

find /etc -maxdepth 2 -type f -name '*.conf'

find命令与其他命令的配合

一、find + 其他命令

例:找出~/test/find目录下的.txt文件并显示详细信息

        方法一:对优先执行的命令使用反引号,或者$()

ls -l `find ~/test/find -name '*.txt' -type f` 

ls -l $(find ~/test/find -name '*.txt' -type f)

        方法二:使用管道符号

  注意事项:当我们使用管道符号时,只会执行后面的ls指令而没有执行前面的find命令

这是因为find查找出的数据是字符串形式的,而ls命令需要的是参数,常规的管道符是无法将字符串转换为参数的。find找出的内容相当于被舍弃了,只执行了的后面的ls命令

解决方法:

通过|xargs把前面命令传过来的字符串转换为后面命令可以识别的参数

find ~/test/find -name '*.txt' -type f |xargs ls -l

        方法三:使用 -exec选项

find ~/test/find -name '*.txt' -type f -exec ls -l {}\;

-exec是find选项,表示find找出文件后要执行的命令

{} 表示前面find命令找出的文件.

\;表示命令结束,固定格式.

二、find与打包压缩

例:找出~/test/find 目录下以.txt结尾的文件,并解压到/tmp/find.tar.gz

方法一:使用反引号

tar -zcf /tmp/find.tar.gz `find ~/test/find -name '*.txt' -type f`
方法二:管道符号
find ~/test/find -name '*.txt' -type f |xargs tar -zcf /tmp/find.tar.gz 

方法三:-exec选项

find ~/test/find -name '*.txt' -type f -exec tar -zcf /tmp/find-exec.tar.gz {} +

 注意:末尾是 “+” 而不是 “\;”,因为这样是找到一个文件就压缩一个文件,所以后面的文件会覆盖前面的文件 

三、find与移动

例:找出~/test/find 目录下以.txt结尾的文件,复制到/tmp下面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值