如何在bash中翻译pcre(php)正则表达式模式?

时间:2016-05-27 08:26:01

标签: php regex bash

我有以下正则表达式模式在php

中运行良好
/(^((?!thumb).)*\.jpg)/

我的任务是在bash中翻译这个正则表达式,其目的是找到一个目录中的所有.jpg文件(递归地),这些文件不包含文件路径中的thumb字。

我使用这样的结构:

find /folder/path -regex '(^((?!thumb).)*\.jpg)'

但我没有结果?我的正则表达式在bash中有问题吗?

3 个答案:

答案 0 :(得分:1)

您不能对find使用否定前瞻,因为它是POSIX正则表达式。您可以使用此解决方法:

find . -iname '*.jpg' | grep -v "thumb"

然后会列出所有jpg个文件,感谢grep排除包含thumb的所有文件

答案 1 :(得分:1)

认为您将获得的最佳效果是使用两个不同的标准而不是单个正则表达式

find . -name '*.jpg' ! -regex '.*thumb.*'

答案 2 :(得分:1)

find . -iname '*.jpg' -not -iname "*thumb*"