フォルダーを削除して、選択したファイルだけを残すにはどうすればよいですか?

フォルダーを削除して、選択したファイルだけを残すにはどうすればよいですか?

私のフォルダ構造は次のとおりです。

Photos
|
|---> 2015-08-23
      |
      |---> IMG_0019.JPG           // keep
            IMG_0019.JPG.json      // toss
            IMG_0020.JPG           // keep
            IMG_0020.JPG.json      // toss
            IMG_0021.JPG           // keep
            IMG_0021.JPG.json      // toss
            metadata.json          // toss

      2015-08-24
      |
      |---> IMG_0242.MP4           // keep
            IMG_0242.MP4.json      // toss
            metadata.json          // toss

      2015-08-25
      |
      |---> IMG_0243.MOV           // keep
            IMG_0243.MOV.json      // toss
            IMG_0243(1).MOV        // keep
            IMG_0243(1).MOV.json   // toss
            IMG_0244.PNG           // keep
            IMG_0019.PNG.json      // toss
            metadata.json          // toss

これを延々と続ける。私の目標は、次のようなフォルダ構造にすることです。

Photos
|
|--> IMG_0019.JPG
     IMG_0020.JPG
     IMG_0021.JPG
     IMG_0242.MP4
     IMG_0243.MOV
     IMG_0243(1).MOV
     IMG_0244.PNG
     ...

私はこれの修正版を作ろうとしていました記事 ここで、各ディレクトリをループし、正規表現を実行して価値のあるファイルのみを取得します。次のようになります。

// get a list of all directories
// loop through directories
//     get all contents in directory
//     loop through all contents in directory
//        determine if file is of value (ie. MP4, PNG, MOV, JPG, etc.)
//        move selected file out to parent directory
//        remove directory

ご協力いただければ幸いです

答え1

予想される結果の構造から、 で終わらないファイルだけを保持したいとします.json。これは次のように行います。

cd Photos
find . -type f ! -name *.json -exec mv {} . \; && rm -rf 2015*

Photos ディレクトリ内から、 で終わらないファイルを探し.json、それらを または現在のディレクトリに移動し.、不要なサブディレクトリとファイルを削除します。 また、 を使用して、各ディレクトリを削除する前にプロンプ​​トを表示したり、気が変わった場合に残りのファイルとそのディレクトリを削除する前にコマンドを個別にrm -ri 2015*実行したりすることもできます。findrm

関連情報