Bash:批量重命名具有相同名称的嵌套目录或文件

时间:2014-09-22 11:54:21

标签: bash

我想重命名以下目录:

1/2/3/2/21/2_re/3/2_re/2_re

每个目录也有其他内容 - 例如file2stay.sh-应保持不变。

我尝试了这个命令: find ./ -exec bash -c 'mv 2 2_re' \;但在成功重命名第一个目录后,将显示以下错误消息:

mv: cannot stat ‘2’: No such file or directory

2 个答案:

答案 0 :(得分:2)

您需要告诉find使用-depth处理文件夹本身之前的文件夹内容:

find . -name "2" -type d -depth -execdir mv 2 2_re \;

-execdir执行找到mv的文件夹中的./2

答案 1 :(得分:1)

您可以使用find在for循环中将此sort -rprocess substitution一起使用:

while read -r f; do
    mv "$f" "${f}_re"
done < <(find . -name '2' | sort -r)