有一个目录dir/。它包含子目录a- z. 我需要移动的子目录a-y成子目录z。如果这很难,那么不是a- z,而是提供需要移动的目录列表。
我怎样才能在 bash 中做到这一点?
使用大括号扩展:http : //www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
对于您的情况,请执行以下操作:
mv {a..y} z/
Run Code Online (Sandbox Code Playgroud)
如果您有目录的名单,说dir1,dir2和dir3,然后像做:
mv -t z/ dir1 dir2 dir3
Run Code Online (Sandbox Code Playgroud)
或者可能:
mv -t z/ dir{1..3}
Run Code Online (Sandbox Code Playgroud)
-t选项的意思是“目标”。它通常用于在涉及多个文件/目录移动的情况下避免混淆。{1..15}打印从 1 到 15 的所有数字,{a..f}并将打印从a到的所有字母f。至于我更安全的使用方式find
find dir/* -prune -type d -name "[a-y]" ! -name "z" -exec mv -t dir/z {} +
Run Code Online (Sandbox Code Playgroud)