shell四剑客之find

find主要用来查找文件名,其基本格式

find path -option [-print] [-exec -ok command] {} \;

常用参数如下

-name   
find . -name four   查找名为four的文件(包括目录和文件)
find . -name "fou*" 查找开头是fou的文件
find . -name "[A-Z]*"   查找大写字母开头的文件
find . -name "*.txt"    查找以.txt结尾的文件

-user
find . -user lee    查找属主为lee的文件

-group  
find . -group lee   查找属组为lee的文件

-type
find . -type d      查找文件类型为目录的文件,除了d,还有f,b,c,p,l,s,分别指普通文件,块设备,字符设备,管道,链接文件和socket套接字
find . ! -type f    查找非普通文件的文件,符号!表示反向选择

-size
find . -size 10M    查找大小大于10M的文件,+n表示大于nM的文件,-n表示大小小于nM的文件

-perm
find . -perm 600    查找执行权限为600的文件
find . -perm -007   查找777权限的文件,与-perm 777一样效果,+222表示文件权限在222以上

-mtime
find . -mtime 2     查找文件内容修改在两天前的文件,n代表n天前的当天,-n代表n天以内,+n代表n天以前
-atime
find . -atime 2     查找2天前被访问过的文件,n表示n天前当天被访问过,-n表示n天以内被访问过,+n表示n天以前被访问过的
-ctime
find . -ctime +4    查找4天以前文件状态被修改的文件,比如改了文件权限等,-n表示n天以内文件状态有变过,+n表示n天以前文件状态被改过,n表示n天前当天文件状态被改了。

-mmin/-amin/-cmin与上面类似,只是单位变成了分钟

-depth  表示在进入子目录查找之前先在查找完当前目录

-maxdepth   只在当前文件夹这一级来搜索,而不去递归向下搜索
find . -maxdepth 1 -name four   在当前目录下找名为four的,不去子目录下找
find . -maxdepth 1 -type f  注意maxdepth的位置要在前面
find . -maxdepth 1 -size +100M -exec ls -lh {} \;   把大于100M的文件显示出来,不搜索跨级目录下的文件

-a  
find . -name "four*" -type d
find . -name "four*" -a -type d 这两个语句的结果是一样的,只是-a-name "four*"-type d两个表达式组合在一起

-exec表示对搜索到的每个文件执行指定的命令
cp表示复制
{}表示搜索到的每个文件
\;表示命令的结束,为避免转义故在;前加符号\
如果是移动的话则是-exec mv {} {}.other \;

find . -name "*.txt" -type f -exec cp {} /tmp \;    查找.txt结尾的普通文件并复制到tmp目录下,-
find . -name "[A-Z]*" | xargs chmod 600 -R  查找大写字母开头的文件及子文件并把权限设置为600,注意-R代表子文件的权限也会修改

可以同时指定多个要搜索的文件夹,而如下的搜索有重复的结果,因为当前目录就是在/root下面(符号.代表当前目录)

[root@localhost ~]# find . /root -name four
./package/four
./four
/root/package/four
/root/four

如果指定要搜索的文件夹本身不存在,则会直接报错

[root@localhost ~]# find hello -name abc
find: “hello”: 没有那个文件或目录

-newerab a和b代表不同类型,包括访问时间a,修改时间m和状态变化时间c等

find . -newermt 2017-08-23  表示修改时间m比2017-08-23新的文件,t后面直接接时间

一般不直接在根目录下用find去找文件,因为会耗费不小系统资源,而是在相对目录下去找

最后,find支持正则,默认类型是emacs,可以通过-regextype来指定要用的类型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值