特定のカメラで撮影したすべての画像を削除する

特定のカメラで撮影したすべての画像を削除する

私は必要です:

このコマンドは、.jpg現在のディレクトリとサブディレクトリからRaspberryPiカメラでキャプチャしたすべてのファイルを削除します。

(理想的にはGit BashのWindowsバージョンと組み合わせて使用​​することをお勧めしますが、これはより便利なのでオプションです。)

私が試したこと:

find . -name "*.jpg" -size 24k -deleteサムネイル削除を使用しましたが、このfileユーティリティがカメラメーカー(manufacturer=RaspberryPi)を表示できることがわかりました。

例:

$ file f49100889.jpg
f49100889.jpg: JPEG image data, Exif standard: [TIFF image data,
big-endian, direntries=10, height=0, manufacturer=RaspberryPi, 
model=RP_OV5647, xresolution=156, yresolution=164, resolutionunit=2, 
datetime=2015:06:09 08:15:03, width=0], baseline, precision 8, 
1920x1080, frames 3

背景:

NTFSドライブのファイルシステムが破損し、testdisk / photorecを使用してファイルを修復しました。これでファイルが取得されましたが、ディレクトリ構造やファイル名などの一部のメタデータが失われました。バックアップから最も重要なファイルを復元し、残りのデータをできるだけ多く回収したいと思います。残りのファイルを簡単に操作できるように、一部のジャンクファイルを削除する必要があります。

私の目標を達成するためにこれらのコマンドを組み合わせることは可能ですか?それではどうですか?この問題を解決するより良い方法はありますか?

よろしくお願いします!

答え1

これは簡単な方法です。以下はというscript.shスクリプトの内容です~/bin/

#!/usr/bin/env bash
if (file "$1" | grep "RaspberryPi"); then
    echo "rm $1" # <- safety first: just echo, no delete
    # rm "$1" # <- uncomment to delete, leave the quotes
fi

実行権限()を付与しますchmod 0750 ~/bin/script.sh。その後、ファイルを見つけて結果を一度に1つずつスクリプトに渡します(\;代わりにを使用して)。+

find ~ -iname *.jpg 2>/dev/null -exec ~/bin/script.sh {} \;

もう一つのツールはidentifyImageMagickから入手できます。このツールは画像の特性を記述し、EXIFを含む画像データを読み込みます。と比較してはるかに遅いですが、画像fileには提供されているよりもはるかに多くの情報がありますfilefile探しているデータが記載されていない場合に役立ちます。使用法は次のとおりです。

identify -verbose "$file" | grep "RaspberryPi"

戻りコードを表示して、戻りコード(上記のステートメントの内側または後でgrep使用される)をテストできます。fileから:identifyifman grep

通常、終了状態は、行が選択されている場合は0、行が選択されていない場合は1、エラーが発生した場合は2です。

$?この情報は、変数に最後に実行されたコマンドの戻りコード/値または終了コード/値が含まれているという情報を結合します。

file image.jpg | grep "RaspberryPi"
echo $?

file上の行は、「RaspberryPi」文字列を含む結果に対して0(一致項目が見つかった)値を生成します。

file image.jpg | grep "Rumpelstiltskin"
echo $?

上記の行は、file「Rumpelstiltskin」文字列と一致するものがないと仮定して、1 - 一致しない値を生成します。

関連情報