我有以下脚本来替换文字。
grep -l -r "originaltext" . |
while read fname
do
sed 's/originaltext/replacementText/g' $fname > tmp.tmp
mv tmp.tmp $fname
done
现在在这个脚本的第一个声明中,我想做这样的事情。
find . -name '*.properties' -exec grep "originaltext" {} \;
我该怎么做?
我在AIX上工作,所以--include-file不起作用。
答案 0 :(得分:1)
您可以反过来将'* .properties'文件列表提供给grep。例如
grep -l "originaltext" `find -name '*.properties'`
哦,如果你在最近的Linux发行版中,grep中有一个选项来实现它,而不必创建那么长的文件列表作为参数
grep -l "originaltext" --include='*.properties' -r .
答案 1 :(得分:1)
通常,我更喜欢使用find
来查找FIND文件而不是grep
。看起来很明显:)
使用process substitution,您可以为while
循环提供find
的结果:
while IFS= read -r fname
do
sed 's/originaltext/replacementText/g' $fname > tmp.tmp
mv tmp.tmp $fname
done < <(find . -name '*.properties' -exec grep -l "originaltext" {} \;)
注意我使用grep -l
(大L
),以便grep
只返回与模式匹配的文件名。