別のサブディレクトリに同じ名前があるが拡張子が異なるファイルがない場合は、ファイルを削除するスクリプト

別のサブディレクトリに同じ名前があるが拡張子が異なるファイルがない場合は、ファイルを削除するスクリプト

ディレクトリ構造(下図)に一連のサムネイルとRAWファイルがあり、プレビュー画像をすばやく見て、不要なファイルを削除します。

RAWファイルは、各ディレクトリのRAWサブディレクトリにあります。

私が探しているのはbashコマンドですが、そのサムネイルがあるファイルがない場合はRAWファイルを削除する小さなスクリプトです。

サブディレクトリツリーは次のとおりです。

2016/
     05/
        image1.jpg
        image2.jpg
        image3.jpg
        RAW/
            image1.RAW
            image2.RAW
            image3.RAW

想像できるように、年と月のサブディレクトリが複数あり、時には大きなイベントが発生した場合は、月のサブディレクトリの下に一連のサブディレクトリがあります(下記参照)。したがって、理想的には、A content cron is run daily/を挿入しようとします。毎週作成したレビュー/変更を整理します。

2016/
     05/
        image1.jpg
        image2.jpg
        image3.jpg
        RAW/
            image1.RAW
            image2.RAW
            image3.RAW
        event 1/
                image4.jpg
                image5.jpg
                image6.jpg
                RAW/
                    image4.RAW
                    image5.RAW
                    image6.RAW
        event 2/
                image7.jpg
                image8.jpg
                image9.jpg
                RAW/
                    image7.RAW
                    image8.RAW
                    image9.RAW

ベストアンサー1

はるかに簡単なCostas方式はスクリプトを必要としませんが、組み込み、正しいディレクトリ、および正しいコマンド置換を使用します。 (未検証)

find 2016 -name '*.RAW' -execdir sh -c '[ ! -f "../${0%.RAW}.jpg" ]' {} \; -delete

これを行うには、bashスクリプト(いくつかのglobstar(**)といくつかの[[]]))を書くのは簡単です。これで作業は完了です!

おすすめ記事