如何替换所有文件夹和文件名中的字符串

Bla*_*sco 8 shell rename

如何使用不同的字符串递归替换所有文件夹和文件名中的字符串?我正在运行 Red Hat 6,我可以通过以下方式找到它们:

find . -name \*string\*
Run Code Online (Sandbox Code Playgroud)

我已经设法为文件中的字符串做到了:

find . -type f -exec sed -i 's/string1/string2/g' {} +
Run Code Online (Sandbox Code Playgroud)

但是我怎么能以类似的方式替换所有文件名?

Gan*_*sh_ 8

您可以使用formv命令替换所有文件名。

在这里,我将替换所有以abc名称开头的文本文件xyz

for file in abc*.txt; do mv -v "$file" "${file/abc/xyz}"; done
Run Code Online (Sandbox Code Playgroud)

以下命令将递归替换所有文件夹中的文件

for file in `find . -type f -name 'abc*.txt'`; do mv -v "$file" "${file/abc/xyz}"; done
Run Code Online (Sandbox Code Playgroud)


Pes*_*The 7

使用findrename

find . -type f -exec rename 's/string1/string2/g' {} +
Run Code Online (Sandbox Code Playgroud)