Linux发现修剪和否定

时间:2014-06-26 17:11:29

标签: linux shell find

我想grep除

之外的目录中的所有文件
  • lib
  • 的子目录
  • 图片(pngjpg

我在shell脚本中执行此操作,将参数传递给grep,没问题。

此命令排除lib

的子目录
find src \
  -name lib -prune -o \
  -type f -exec grep -P "$@" {} +

这个图片排除了

find src \
  ! -name "*.jpg" ! -name ".png" \
  -type f -exec grep -P "$@" {} +

汇总为

find src \
  -name lib -prune -o \
  ! -name "*.jpg" ! -name ".png" \
  -type f -exec grep -P "$@" {} +

无法排除图像。知道发生了什么吗?

2 个答案:

答案 0 :(得分:1)

由于您遗漏了*中的-name "*.png",因此无法排除png图片。

答案 1 :(得分:0)

一种通常有用的方法是在管道之后通过grep过滤结果,这降低了原始命令的复杂性,因此:

找到[简化查找选项] | egrep -v“.jpg | .png”