如何将子目录移动到同一目录中的另一个子目录?

如何将子目录移动到同一目录中的另一个子目录?

有一个目录dir/。它包含子目录a- z.我需要将子目录移动aysubdirectory 中z。如果这很难,那么不是a- z,而是提供需要移动的目录列表。

我怎样才能在 bash 中做到这一点?

答案1

使用大括号扩展:http://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html

对于您的情况,请执行以下操作:

mv {a..y} z/

如果您有目录列表,例如dir1dir2dir3,则执行以下操作:

mv -t z/ dir1 dir2 dir3

或者可能:

mv -t z/ dir{1..3}

简要说明:

  • -t选项的意思是“目标”。它通常用于避免涉及多个文件/目录移动的情况下的混乱。
  • 大括号扩展的工作方式是{1..15}打印从 1 到 15 的所有数字,并{a..f}打印从a到 的所有字母f

答案2

至于我更安全的使用方式find

find dir/* -prune -type d -name "[a-y]" ! -name "z" -exec mv -t dir/z {} +

答案3

注意:这不是最干净的方法(请参阅 shivams 的答案),并且如果您仅有的a-z里面有目录dir


我一直用的是比较容易记住的

mv * z

当然,它抱怨说

mv: cannot move ‘z’ to a subdirectory of itself, ‘z/z’

但否则做你想做的事。

这(至少)适用于GNU coreutils

相关内容