查找并替换树中的字符串。递归

时间:2015-07-28 11:36:09

标签: linux windows recursion sed rename

我试过在这里寻找答案而且我发现了一些,但它们似乎对我不起作用。我想重命名一个项目文件,我发现最简单的方法是在每个文件中替换它的名字,并且在目录中也替换每个文件名。

有人可以指点我(在Windows或Linux中)以递归方式替换每个文件和每个文件名目录中的字符串,并使用另一个字符串吗?

我将非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

在Unix中,您可以在bash shell中执行此操作。您必须使用查找 mv sed 以及以下三个命令作为示例:

  1. 将字符串“ABC”替换为每个目录的名称中的“345” 在当前目录或子目录中递归。

    find . -depth -type d -name "*ABC*" -exec bash -c 'dir=${1%/*} base=${1##*/}; mv "$1" "$dir/${base//ABC/345}"' par0 {} \;
    
  2. 将字符串“ABC”替换为“345”在每个文件的名称中 当前目录或递归中的子目录。

    find . -depth -type f -name "*ABC*" -exec bash -c 'dir=${1%/*} base=${1##*/}; mv "$1" "$dir/${base//ABC/345}"' par0 {} \;
    
  3. 在每个文件的内容中用“345”替换字符串“ABC” 在当前目录或子目录中递归。

    find . -depth -type f -name "*" -exec bash -c 'sed -i "s/ABC/345/g" "$1"' par0 {} \;