linux find命令强大之处

转自:https://blog.csdn.net/dream2009gd/article/details/35566897

-print -exec -ok 与正则化匹配需要学习

find命令

find pathname -options [-print -exec -ok ...]
      -print: find命令将匹配的文件输出到标准输出。
      -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
      -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

例子:

在/etc目录中查找文件名以host开头的文件;

$ find /etc -name "host*" -print 
在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件;
$find . -name "[a-z][a-z][0--9][0--9].txt" -print 
另外find是分大小写的,如果不想分大小写,可用-iname替换-name.
-type f,表示只找file,文件类型的,目录和其他字节啥的不要
find ./ -type f -exec grep iceskysl {} /dev/null \;
适用于正则查找,也适用于内容查找:
查找目录下的所有文件中是否含有某个字符串 ,xargs表示把后面的结果作为前面命令的参数:
find .|xargs grep -ri "IBM" 相当于grep –ri “IBM” ./
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l 相当于grep –ril “IBM” ./
-exec作为find命令的参数,使用{}替换find的结果,末尾要加\;作为-exec命令的终结符:
复制目录下所有的.py文件:
find ./ -name *.py -exec cp {} /tmp/ \;
find ./ -name "*.txt" -exec grep "bin" {} \;
find ./ -name "*.txt" -exec rm {} \; 
shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。

当然,find ... | xargs rm -rf   也有一样的作用。

find可以有逻辑运算,特别是取非:

 找出文件夹下所有不以extract开始的文件

find ./ ! -name "extract*"        

找出文件夹下所有以py或者sh为后缀的文件    

find ./ -name "*.py" -o -name "*.sh"    
查找当前目录下(递归子目录)的所有名为*.java并且修改时间在10分钟之内的文件,-a是默认选项
find ./ -name "*.java" -a -size +100k -mmin -10    
找出文件夹下所有不是以(py或者sh)为后缀的文件
find ./ ! -name "*.py" -o -name "*.sh" 
 删除文件夹下所有不是以.py结尾的文件      
find ./ ! -name "*.py" -exec rm {} \;     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值