每天一个Linux命令四剑客之find

四剑客之find 命令在文件系统中搜索文件和目录。

find 命令是用来在指定目录下查找文件,在参数之前的任何字符串都会当作是目录名。使用 find 命令时,如何不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部显示出来。

find与xargs和管道符配合”
    find -exec 必须有{} \;
    xargs不支持别名
语法:     find(选项)(参数)


        -type                            #根据文件类型查找,f与d
        -name                            #根据名称查找,”名称”
        -iname                            #不区分大小写,名称查找,”名称”
        -size                            #按大小查找,大于用+,小于用-
        -mtime                            #按修改时间查找(+77天前,-77天后)
        -exec                            #查询后的数据输出到后面的命令(后面必须有{} \;
   find / -type f -name "hosts"        #从根下找名称为“hosts”的文件
        find /etc/ -size +1M                #查找/etc/下大于1M的文件或目录
        find /olda/ -name '*.log' |xargs ls -l            #查看搜索到的文件详细信息
        find /olda/ -name '*.log' -exec ls -l {} \;        #查看搜索到的文件详细信息
        find /etc/ -name "*.conf" -type f |xargs  tar zcfP /tmp/conf_$(date +%F).tar.gz            #压缩查询后的文件
        find /etc/ -name "*.conf" -type f -exec tar zcfP conf__$(date +%F).tar.gz {} \;            #压缩查询后的文件
        find /olda/ -type f -mtime +7 -exec rm -f {} \;            #查找一个删除一个
        find /olda/ -name "*.log" -exec cp {} /opt/ \;                #查找一个复制一个

使用实例:
根据文件或者正则表达式进行匹配

/home目录下查找以.txt结尾的文件名
find /home -name "*.txt"
同上,但忽略大小写
find /home -iname "*.txt"
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
 
find . \( -name "*.txt" -o -name "*.pdf" \)
 
或
 
find . -name "*.txt" -o -name "*.pdf"
匹配文件路径或者文件
 
find /usr/ -path "*local*"
基于正则表达式匹配文件路径
 
find . -regex ".*\(\.txt\|\.pdf\)$"
同上,但忽略大小写
 
find . -iregex ".*\(\.txt\|\.pdf\)$"

根据文件类型进行搜索

find . -type 类型参数
类型参数列表:
 
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo

借助-exec选项与其他命令结合使用

找出当前目录下所有root的文件,并把所有权更改为用户tom
 
find .-type f -user root -exec chown tom {} \;
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
 
找出自己家目录下所有的.txt文件并删除
 
find $HOME/. -name "*.txt" -ok rm {} \;
上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
 
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
 
find . -type f -name "*.txt" -exec cat {} \;> all.txt
将30天前的.log文件移动到old目录中
 
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空城雀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值