我有一个目录A,其中包含一百个子目录。这些子目录中的每一个都包含一个目录。
例如,如何将一百个目录中的每个目录中的这个单个目录重命名为相同的名称X
?我已经尝试过该mmv
命令,但没有运气。
任何帮助,将不胜感激!
答案1
也许是更好的方法,但是:
使用bash
和find
while IFS= read -r dir; do
mv -- "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)
首先进行测试运行,例如:
while IFS= read -r dir; do
printf 'mv "%s" "%s"\n' "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)
简而言之:
find
.
当前目录作为基础(通常A
在您的情况下)type d
(目录)最小和最大深度为 2
bash
读取并移至$dir
find
$dir
${dir%/*}
删除最后一个/
和之后的所有内容/X
附加新的目录名称。
例如find ./A ...
,如果您居住在 A 级以下一级,则使用此类。
可以选择添加-v
到mv
(非 POSIX)以显示所采取的操作。