複数のサブディレクトリで、特定の拡張子を持つすべてのファイルを1つのディレクトリに移動します。

複数のサブディレクトリで、特定の拡張子を持つすべてのファイルを1つのディレクトリに移動します。

複数のディレクトリに多くの.zipファイルがあります。

Fol1/Fol2
Fol3
Fol4/Fol5

共通のデフォルトフォルダにすべて移動するにはどうすればよいですか?

ベストアンサー1

cd …zipファイル()を含むツリーの最上位ディレクトリに移動して、次を実行します。

mv **/*.zip /path/to/single/target/directory/

これはzshですぐに利用できます。シェルがbashの場合は、shopt -s globstar最初に実行する必要があります(このコマンドをシェルに入れて入れる必要があります~/.bashrc)。シェルがkshの場合は、最初にset -o globstar実行(に入れる必要があります~/.kshrc)する必要があります。

またはfind特別な準備なしでどこでも使用できますが、より複雑なものを使用してください。

find . -name '*.zip' -exec mv {} /path/to/single/target/directory/ \;

後で空のディレクトリを削除するには、zsh で次のようにします。

rmdir **/*(/^Fod)

Bashまたはkshから:

rmdir **/*/

そして、削除する必要がある空のディレクトリがある限り繰り返します。またはどのシェルでも

find . -depth -type d -empty -exec rmdir {} \;

おすすめ記事