4

我想仅在文件夹的子文件夹中存在的 xml 文件中将字符串“解决问题”替换为“选择最佳答案”。我已经编译了一个脚本来帮助我做到这一点,但是有两个问题

  1. 它还替换了脚本的内容
  2. 它替换了子文件夹的所有文件中的文本(但我只想更改 xml)
  3. 如果文本不匹配发生在特定的子文件夹和文件中,我想显示错误消息(最好是文本输出)。

所以你能帮我修改我现有的脚本,这样我就可以解决上述 3 个问题。

我的脚本是:

查找-type f | xargs sed -i "s/解决问题/选择最佳答案/g"

4

2 回答 2

9

使用 bash 和 sed:

search='Solve the problem'
replace='Choose the best answer'
for file in `find -name '*.xml'`; do
  grep "$search" $file &> /dev/null
  if [ $? -ne 0 ]; then
    echo "Search string not found in $file!"
  else
    sed -i "s/$search/$replace/" $file
  fi  
done
于 2012-08-10T17:42:57.310 回答
3
find -type f -name "*.xml" | xargs sed -i "s/Solve the problem/Choose the best answer/g"

不确定我是否理解问题 3。

于 2012-08-08T05:56:47.953 回答