というディレクトリがありますtemp
。このフォルダには複数のサブフォルダがあります(正確な数はわかりません)。これで、temp
名前の付いた別のサブフォルダを作成しますUntitled
。今、他のすべてのサブフォルダをUntitled
。
一時フォルダにa、b、cという3つのフォルダがあるとします。一時にUntitled
は、a、b、c、およびUntitledの4つのフォルダが含まれます。ジョブの実行後、tempにはUntitledフォルダのみが含まれ、Untitledにはa、b、cが含まれます。
Bashを使用してどのようにこれを達成できますか?
私のBashバージョン(Ubuntu 16.04)
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
ベストアンサー1
簡単に言えば、エラーなしでbashの拡張ワイルドカードを使用して、省略したいディレクトリを1つ除外できます。
shopt -s extglob
mv -- !(Untitled) Untitled
拡張ワイルドカードがオンになっている場合は、mv
最初の引数(!(Untitled)
)を現在のディレクトリ内のすべてのファイルとディレクトリに展開して、コマンドが機能していることを確認してください。とは別に「無題」という作品です。これにより、これらのすべてのファイルとディレクトリがUntitled
このディレクトリに移動されます。
ただ動きたいなら目次現在のディレクトリからUntitledに移動して文字を追加します。
shopt -s extglob
mv -- !(Untitled)/ Untitled
...tailは、/
bashがファイルの代わりにディレクトリと一致するように強制します。
.subdir
上記はデフォルトでドットファイル(例:)を省略します。これを選択するには、以下を追加してください。
shopt -s dotglob
これらのシェルオプションの詳細については、次を参照してください。