用多个文件扩展名的正则表达式查找命令

问题描述:

我想知道这是否可以在find命令中使用。我试图找到所有具有以下扩展名的特定文件,然后它将被SED。这里是我当前的命令脚本:用多个文件扩展名的正则表达式查找命令

find . -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | xargs sed -i -e 's/%%MEFIRST%%/mefirst/g' 

不幸的是,我不是在正则表达式那熟悉的,但这样的事情是我需要的。

+1

你用'人find'您找到的版本有'-regex'选项检查?并不是全部。你是说它不起作用吗?看起来没问题,但我的系统没有找到。 -regex',所以我不能肯定地说。祝你好运。 – shellter

+1

嗨贝壳,我终于明白了! 'find。 -regex“。* \。\(sh \ | ini \ | conf \ | vhost \ | xml \ | php \)”-print | xargs sed -i -e's/%% MEFIRST %%/mefirst/g'' 这些脚本将选择所有具有以下扩展名的文件:sh,ini,conf,vhost,xml,php并将替换文本将%% MEFIRST %%添加到选定文件中的mefirst。 – user3282191

+2

你可以在〜48小时后发布你的答案,接受你自己的答案,在S.O.上的声望点。欢迎,祝你好运。 – shellter

我你发现了如何用标准find -regex RE逃避它,但你也可以指定一个类型的正则表达式的支持它,没有任何逃逸,使得它多一点清晰的注释中看到:

在GNU的findutils(Linux的):

find . -regextype posix-extended -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | ... 

在FreeBSD:

find . -E -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | ...