如何使用不同的字符串递归替换所有文件夹和文件名中的字符串?我正在运行 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)
但是我怎么能以类似的方式替换所有文件名?
您可以使用for
和mv
命令替换所有文件名。
在这里,我将替换所有以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)
使用find
和rename
:
find . -type f -exec rename 's/string1/string2/g' {} +
Run Code Online (Sandbox Code Playgroud)