サブディレクトリ内のすべてのファイルをメインディレクトリに移動する

サブディレクトリ内のすべてのファイルをメインディレクトリに移動する

「public」というディレクトリがあり、そこには 1000 個のサブディレクトリが含まれています。例:

public/63a/e9b/79a/file.pdf 
public/64a/2cd/184/other_file.pdf
...

私の目的は、これらのサブディレクトリに含まれるすべてのファイルをメイン ディレクトリ (つまり、public) に移動することです。
そのためには再帰関数が必要だと思います。
誰か助けてくれませんか?

答え1

そのためのツールはすでに標準の Linux 環境の一部になっています。

find public -type f -exec mv {} public/ \;

説明:

ディレクトリ ( )findではなく、ファイルとそのサブ構造にアクセスし、見つかった各ファイルに対してコマンド ( ) を実行して、そのファイル ( で表される) を public に移動する操作を行います。-type fpublic-exec{}

エスケープされたセミコロンは、シーケンスの終わりを示すだけです-exec

関連情報