替换包含隐藏文件的多个文件中的字符串?

时间:2015-09-30 15:41:38

标签: bash

在Mac OS X上,我尝试将多个文件中的“string1”替换为“string2”。但是,有很多隐藏文件,例如.filename_hidden

grep -rl string1 somedir/ | xargs sed -i 's/string1/string2/g'

但这是错误。

grep -r apple ./ | xargs sed -i 's/apple/pear/g'
sed: 1: ".//.file2:This": invalid command code .

.file2有

This apple is hidden. I still want to replace it to pear

我也在Ubuntu上测试过它:

grep -r apple ./ | xargs sed -i 's/${apple}/${pear}/g' ./*.*
sed: can't read ./*.*: No such file or directory
sed: can't read ./.file2:This: No such file or directory
sed: can't read is: No such file or directory
sed: can't read hidden: No such file or directory
sed: can't read apple: No such file or directory

更新

在grep命令中添加选项-l,Mac OS X终端提供以下内容:

 ~/bash_play/test_replace $grep -rl apple .
./.file2
./file1

~/bash_play/test_replace $grep -rl apple . | xargs sed -i 's/apple/pear/g'
sed: 1: "./.file2": invalid command code .

 ~/bash_play/test_replace $grep -rl apple . | xargs sed -i 's/apple/pear/g' *

sed: 1: "file1": invalid command code f
 ~/bash_play/test_replace $grep -rl apple . | xargs sed -i 's/apple/pear/g' */*.*
sed: 1: "*/*.*": invalid command code *

0 个答案:

没有答案