回答:
オーディオファイルの拡張子は.mp3だと思います
find <AudioFolderPath> -name '*.mp3' -exec mv -it <YourTargetFolder> {} +
.mp3オーディオファイルの拡張子に置き換えます
<AudioParentFolderPath>サブフォルダーを含む親フォルダーに置き換えます。
<YourTargetFolder>すべてのファイルを配置する必要があるフォルダーパスに置き換え ます。
異なるサブフォルダーの2 つのファイルが同じ名前の場合、1つだけが移動されます。
編集:として、コスタスは言った:「-iスイッチが作るmvインタラクティブ、それは既存のファイルを上書きする前にプロンプトが表示されます」
-tように、最初に目的地を指定することを許可します。mvマニュアルページから: -t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
find . -type f -mindepth 2 -exec mv -t ./ {} +
このコマンドは、同じ名前のファイルを上書きすることに注意してください。これを使用して、上書きする前にプロンプトを表示できます。
find . -type f -mindepth 2 -exec mv -it ./ {} +
-type f :通常のファイルのみを検索します。-mindepth 2 :サブディレクトリ内のファイルのみを検索します。-exec mv -it ./ {}:-exec「見つかったすべてのファイルに対してこのコマンドを実行する」という意味です。{}ファイル名に置き換えられます。-iスイッチを作るmvインタラクティブ、それは既存のファイルを上書きする前にプロンプトが表示されますと-tにターゲットディレクトリを設定します./。+:で動作することができますシェルとして非常に多くの(1引数の行で)一緒にファイルを置くコマンド呼び出すためのコマンド(ない一つ一つが、いくつかの1つ)最小時間を。さらに空のフォルダーを削除する場合は、同じレシーピーを使用できます。
find . -type d -empty -delete
-type fシンボリックリンク、名前付きパイプなどを除いて、プレーンファイルのみを選択します。ディレクトリ以外のすべてのファイルを移動するには、次のようにします! -type d。
-Lパラメーター
-i標準で、-tGNU-のみ(単にカーネルは、いくつかのGNUおよび非GNUシステムで見ているのLinuxとは何の関係も)ありません
-t一部のシステムには存在しません(それほど古くないAIXのように)
find . -type f -mindepth 2 -exec mv {} ./ \;
はい、これはexecve()、外部コマンドの実行時にシステムコールに渡される引数と環境の累積サイズの制限です。
ではzsh、あなたはその組み込みを使用することができますmv代わりに:
zmodload -F zsh/files +b:zf_mv
zf_mv ./*/* .
またはzargs、リストを管理可能なチャンクに分割するために使用します。
autoload zargs
zargs -Ifiles ./*/* -- mv files .
とksh93:
command -x mv ./*/* .
GNUの場合xargs、およびが組み込まれmvているシェルを使用したGNUの場合printf(ほとんどmkshは注目すべき例外です)
printf '%s\0' ./*/* | xargs -r0 mv -t .
zsh場合、あなたは、いくつか置くことができグロブ予選、例えば(.)または(^/)最後の後に*。
非常にポータブルなソリューションは次のとおりです。
すべてのサブフォルダ内のすべてのファイルを検索し、現在のディレクトリに移動します
find ./*/ -type f -print | xargs mv -i "{}" ./
あなたが| egrep "\.au$|\.mp3$|\.ac3$"見つけたファイルがオーディオ拡張子を持つファイルであることを確認するために中間に追加することができます(すべてのタイプをカバーするために必要なだけの拡張子を追加します、私は3つの一般的なものを提供します)
find。ちょうど十分echoかprintf
find、問題を解決しないでxargsください。
tは「ターゲット」の可能性がありますか?