用多个文件扩展名的正则表达式查找命令
问题描述:
我想知道这是否可以在find命令中使用。我试图找到所有具有以下扩展名的特定文件,然后它将被SED。这里是我当前的命令脚本:用多个文件扩展名的正则表达式查找命令
find . -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | xargs sed -i -e 's/%%MEFIRST%%/mefirst/g'
不幸的是,我不是在正则表达式那熟悉的,但这样的事情是我需要的。
答
我你发现了如何用标准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)$' | ...
你用'人find'您找到的版本有'-regex'选项检查?并不是全部。你是说它不起作用吗?看起来没问题,但我的系统没有找到。 -regex',所以我不能肯定地说。祝你好运。 – shellter
嗨贝壳,我终于明白了! '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
你可以在〜48小时后发布你的答案,接受你自己的答案,在S.O.上的声望点。欢迎,祝你好运。 – shellter