1つのサブフォルダを除いてすべてそのサブフォルダに移動

1つのサブフォルダを除いてすべてそのサブフォルダに移動

というディレクトリがあります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

これらのシェルオプションの詳細については、次を参照してください。

おすすめ記事