find命令 如何排除某个目录

find . -path ./src/emacs -prune -o -print  

-a -o和 && || 一样都有短路性;

实际可以理解为这样(find condition1 && -prune || -print) find . -path ./src/emacs -a -prune -o -print, 如果find . -path ./src/emacs返回真(就是找到的内容匹配),那接着执行-prune进行忽略处理,由于短路原因跳过-print; 如果find . -path ./src/emacs返回假(就是说找到的内容不匹配),由于短路原因就会跳过-prune来执行-print,打印出这些不匹配的内容;

以此类推,不满足条件1,2,3而满足条件4的语句就该是这样的:

find condition1 -prune -o condition2 -prune -o condition3 -prune -o condition4 -print


应用举例:

红色部分作用是排除.repo .git目录,绿色部分作用是限制找到的文件后缀必须是.c/.cc/.cpp/.h,蓝色作用是将输出的结果的间隔符号换成‘\0'(以便处理文件名称中包含空格的情况),紫色部分将结果作为grep的输入(-0代表以’\0'作为间隔符),最后grep找到参数中要求的字符并且用颜色标记,加上行号。

  1. function cgrep()  
  2. {  
  3.     find . -name .repo -prune -o -name .git -prune -o -type f  name.coname.cconame.cpponame.h  -print0 | xargs -0 grep --color -n "$@"  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值