在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 *