【发布时间】:2015-10-18 22:36:05
【问题描述】:
我曾尝试在这里寻找答案,但我找到了一些,但它们似乎对我不起作用。我想重命名一个项目文件,我发现最简单的方法是在每个文件中替换它的名称,并且在目录中也替换每个文件名。
有人可以指点我一种方法(在 Windows 或 linux 中)用另一个字符串递归地替换每个文件和每个文件名的目录中的字符串吗?
感谢所有帮助。
【问题讨论】:
标签: linux windows recursion sed rename
我曾尝试在这里寻找答案,但我找到了一些,但它们似乎对我不起作用。我想重命名一个项目文件,我发现最简单的方法是在每个文件中替换它的名称,并且在目录中也替换每个文件名。
有人可以指点我一种方法(在 Windows 或 linux 中)用另一个字符串递归地替换每个文件和每个文件名的目录中的字符串吗?
感谢所有帮助。
【问题讨论】:
标签: linux windows recursion sed rename
在 Unix 中,您可以在 bash shell 中执行此操作。您必须使用 find、mv 和 sed 以及以下三个命令作为示例:
将每个目录的名称中的字符串"ABC"替换为"345" 在当前目录或递归子目录中。
find . -depth -type d -name "*ABC*" -exec bash -c 'dir=${1%/*} base=${1##*/}; mv "$1" "$dir/${base//ABC/345}"' par0 {} \;
将中每个文件的名称中的字符串"ABC"替换为"345" 当前目录或子目录中递归。
find . -depth -type f -name "*ABC*" -exec bash -c 'dir=${1%/*} base=${1##*/}; mv "$1" "$dir/${base//ABC/345}"' par0 {} \;
在每个文件的内容中用“345”替换字符串“ABC” 在当前目录或递归子目录中。
find . -depth -type f -name "*" -exec bash -c 'sed -i "s/ABC/345/g" "$1"' par0 {} \;
【讨论】: