我想重命名以下目录:
从1/2/3/2/2
到1/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
答案 0 :(得分:2)
您需要告诉find
使用-depth
处理文件夹本身之前的文件夹内容:
find . -name "2" -type d -depth -execdir mv 2 2_re \;
-execdir
执行找到mv
的文件夹中的./2
。
答案 1 :(得分:1)
您可以使用find
在for循环中将此sort -r
与process substitution
一起使用:
while read -r f; do
mv "$f" "${f}_re"
done < <(find . -name '2' | sort -r)