MacOS에서 다른 확장자를 가진 파일 동기화

MacOS에서 다른 확장자를 가진 파일 동기화

사진을 촬영한 후에는 JPG(파일 *.jpg)와 RAW(파일 *.CR2)라는 두 개의 폴더가 생깁니다. 보통 JPG 폴더를 뒤져보고 마음에 들지 않는 것은 삭제합니다.

내가 원하는 것은 다음을 확인하는 bash 스크립트를 만드는 것입니다.

 for file.cr2 in folder.getFiles
   if file.jpg is NOT in folder2.getfiles 
      delete file.cr2

rsync의 몇 가지 예를 보았지만 파일의 확장자가 동일하고 bash를 잘 못해서 C에서 할 수 있지만 배우고 싶습니다.

답변1

이 시도:

for file in cr2files/*; do
   test=”jpgfiles/$(basename ${file:: -3})jpg”
   if [ ! –f “$test” ]; then
      echo “$file”
   fi
done

원하는 결과를 얻으면 echo "$file" - 행을 - rm "$file" -로 바꿀 수 있습니다. test="jpgfiles/$(basename ${file:: -3])jpg" 줄은 파일 이름에서 경로와 확장자를 제거하고 "jpgfile/filename.jpg"로 바꿉니다. 경로 이름 "cr2files" 및 "jpgfiles"를 올바른 경로 이름으로 변경하는 것을 잊지 마십시오. 원하는 경우 변수를 사용하거나 매개변수의 스크립트에 경로 이름을 전달할 수 있습니다.

편집하다:

"Toshiba ser"의 공간이 기본 이름을 엉망으로 만듭니다. 해결책은 다음과 같습니다.

#!/bin /bash
IFS=’’
for file in “$1”/*; do
   test=”$2/$(basename ${file:: -3})jpg”
   if [ ! –f “$test” ]; then
      rm “$file”
   fi
done

"volumes/toshiba ser/raw" "volumes/toshiba ser/jpg"와 같이 ./removephotos.sh를 호출합니다. 2행의 작은따옴표 사이에는 IFS=''라는 문자가 없습니다.

관련 정보