ディレクトリを保存せずにファイルを繰り返しコピーします。

ディレクトリを保存せずにファイルを繰り返しコピーします。

MP3ファイルを含むディレクトリがたくさんあります。これらのディレクトリには、内部に他のディレクトリは含まれていません。

ファイルを削除せずにすべてのディレクトリ構造を削除する方法は?

これはデフォルトでそのディレクトリ内のすべてのファイルを現在のディレクトリに移動します。現在のディレクトリは、他のディレクトリがあるディレクトリです。

答え1

find一直線性:

find . -mindepth 2 -type f -execdir sh -c 'mv -vt ../ "$@" ; rmdir "$PWD"' _ {} +
  • -mindepth 2findコマンドは現在のディレクトリのファイルを無視します。
  • -execdirここでこれが重要です。これにより、find現在のディレクトリがファイルを含むディレクトリに変更され、その中のコマンドがそのディレクトリ自体で実行されます。

  • mv -vt ../ "$@"、次に展開されます。mv -vt ../ "file1" "file 2" "..." "fileN"

  • rmdir "$PWD"ディレクトリが削除され、-execdirすべてのファイルがディレクトリに移行された後に実行されます。親ディレクトリ

注意してください同じファイル名を持つファイルは、ターゲットパスに移動しても上書きされません。

答え2

parent="$PWD"
for dir in *; do
    test -d "$dir" || continue
    pushd "$dir" || continue
    mv -i -- * "$parent"
    popd
    rmdir "$dir"
done

関連情報