ディレクトリがありますdir/
。サブディレクトリが含まれていますa
。サブディレクトリをサブディレクトリにz
移動する必要があります。これが難しい場合は、代わりに移動する必要があるディレクトリのリストを提供してください。a
y
z
a
z
Bashでどうすればいいですか?
答え1
支柱の拡張を使用する:http://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
あなたの場合は、次のことを行います。
mv {a..y} z/
dir1
、、dir2
などのディレクトリのリストがある場合は、dir3
次の操作を行います。
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