我有一个包含大量XML文件的文件夹。
其中一组中有&
,应转换为&
。
我不是bash guru但是我可以用bash脚本以某种方式更改所有文件中的所有字符吗?
答案 0 :(得分:3)
您只需要通过sed
过滤器传递文件,如下面的记录:
$ echo '
this is line 1
this is line 2 with a & character.
and this is line 3 with & and & on it' | sed 's/&/&/g'
this is line 1
this is line 2 with a & character.
and this is line 3 with & and & on it
要使用一组文件执行此操作,您可以使用就地(自然备份)变体:
sed -i.bak 's/&/&/g' *.xml
答案 1 :(得分:3)
sed可以在当前工作目录中的所有文件上进行就地替换,
sed -i 's/&/&/g' *
如果你想要多层次,比如
for file in `find`; do sed -i 's/&/&/g' $file; done
如果您只想替换可能有用的.xml扩展名的文件,请执行
for file in `find -iname '*.xml'`; do sed -i 's/&/&/g' $file; done
答案 2 :(得分:2)
!/bin/bash
startdirectory="/home/jack/tmp/tmp2"
searchterm="&"
replaceterm="&"
for file in $(grep -l -R $searchterm $startdirectory)
do
sed -e "s/$searchterm/$replaceterm/ig" $file > /tmp/tempfile.tmp
mv /tmp/tempfile.tmp $file
echo "Modified: " $file
done
echo "Done!"