특정 카메라로 촬영한 모든 이미지 삭제

특정 카메라로 촬영한 모든 이미지 삭제

나는 필요하다:

이 명령은 .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. 그런 다음 파일을 찾아 결과를 한 번에 하나씩 스크립트에 전달합니다( \;대신 를 사용하여).+

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

또 다른 도구는 identifyImageMagick에서 제공됩니다. 이 도구는 이미지 특성을 설명하고 EXIF를 포함한 이미지 데이터를 읽습니다. 에 비해 훨씬 느리지만 file이미지에는 제공된 것보다 훨씬 더 많은 정보가 있습니다 file. file찾고 있는 데이터가 설명되어 있지 않을 때 도움이 될 수 있습니다 . 사용법은 다음과 같습니다.

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 - 일치 항목 없음 값을 생성합니다.

관련 정보