正则表达式排除少数文件,但包括休息

时间:2012-10-23 12:26:40

标签: regex

我有多级目录结构,我想列出所有(png,jpeg文件),除了来自任何目录的文件,例如sam.png,pam.jpeg等

最终,我想将所有文件列为

a/b/c/d*.jpg (inlude all jpg, but I want to exclude sam.png from a/b/c/d directory)

a/b/c/d*.jpeg

a/b/c/d*.png

a/e/f/k/h/*.png

......等等

我该怎么做?

2 个答案:

答案 0 :(得分:3)

使用以下regex -

.(jpg|jpeg|gif|png)$(?<!sam.png|pam.jpeg)

这使用negative look behind

答案 1 :(得分:0)

我不完全确定你问题的背景。

但是,您可以使用find .列出目录下的文件(递归)。

使用egrep使用正则表达式过滤结果。

然后使用egrep -v以负面方式过滤(如果它与匹配不匹配)。

所以我想这样的事情可能会起到作用:

find . | egrep "*.(jpg|png)$" | egrep -v "*.(sam.png)"