我有以下正则表达式模式在php
中运行良好/(^((?!thumb).)*\.jpg)/
我的任务是在bash中翻译这个正则表达式,其目的是找到一个目录中的所有.jpg
文件(递归地),这些文件不包含文件路径中的thumb
字。
我使用这样的结构:
find /folder/path -regex '(^((?!thumb).)*\.jpg)'
但我没有结果?我的正则表达式在bash中有问题吗?
答案 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*"