나는 필요하다:
이 명령은 .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 {} \;
또 다른 도구는 identify
ImageMagick에서 제공됩니다. 이 도구는 이미지 특성을 설명하고 EXIF를 포함한 이미지 데이터를 읽습니다. 에 비해 훨씬 느리지만 file
이미지에는 제공된 것보다 훨씬 더 많은 정보가 있습니다 file
. file
찾고 있는 데이터가 설명되어 있지 않을 때 도움이 될 수 있습니다 . 사용법은 다음과 같습니다.
identify -verbose "$file" | grep "RaspberryPi"
반환 코드를 표시하여 반환 코드( 위 명령문 내부 또는 이후에 grep
사용됨 )를 테스트할 수 있습니다. file
에서:identify
if
man grep
일반적으로 종료 상태는 행이 선택된 경우 0, 행이 선택되지 않은 경우 1, 오류가 발생한 경우 2입니다.
$?
이 정보를 변수에 실행된 마지막 명령의 반환 코드/값 또는 종료 코드/값이 포함되어 있다는 정보를 결합합니다.
file image.jpg | grep "RaspberryPi"
echo $?
file
위 줄은 "RaspberryPi" 문자열이 포함된 결과에 대해 0(일치 항목 발견) 값을 생성합니다.
file image.jpg | grep "Rumpelstiltskin"
echo $?
위 줄은 file
"Rumpelstiltskin" 문자열과 일치하는 항목이 없다고 가정하여 1 - 일치 항목 없음 값을 생성합니다.