rsync를 사용하여 두 폴더를 동기화하는 방법이 있습니까?
JPG 및 RAW 형식으로 사진을 찍고 싶습니다. JPG를 보는 것이 RAW를 여는 것보다 훨씬 빠르기 때문에 JPG 폴더를 선별한 다음 RAW 폴더에 동기화하고 싶었습니다. 그러나 확장자는 다르지만 파일 이름은 동일합니다.
가장 가능성 있는 해결책은 이 작업을 수행하기 위해 sh를 만든 다음 별칭을 지정하는 것입니다.
답변1
일반적으로 파일 이름이 비슷하지만 특정 위치에서 변경된 경우 [] 괄호 안에 차이점을 설정할 수 있습니다.
ruslanas@ruslanas test]$ ls
a.jpg a.raw a.doc
[ruslanas@ruslanas test]$ ls a.{jpg,raw}
a.jpg a.raw
[ruslanas@ruslanas test]$
또는 jpg 및 raw 확장만 있고 해당 2개의 확장만 있는 경우 별표를 사용하세요.
또한 싱글라이너를 사용하여 raw에서 jpg를 추출하려면 raw를 raw 디렉터리로 이동합니다.
cd /path/to/fresh-photos && ls *raw | while read line ; do culling $line -output /path/to/processed/jpg/$(echo $line | sed 's/raw$/jpg/g') && mv $line /path/to/processed/raw ; done
컬을 쿨러로 교체하기만 하면 됩니다!
위 줄의 또 다른 단점은 새 파일을 위한 임시 디렉터리를 제공해야 한다는 것입니다. 처리되지 않은 jpg만 선별하는 쉬운 방법도 있습니다.
RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "processing ${RAW}/${line}.raw" && culling ${line}.raw -output ${JPG}/$line.jpg ; done
이번에도 컬링을 포옹 명령으로 바꾸세요.
JPG 디렉토리에 없는 RAW 사진만 삭제해야 하는 경우:
RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "Removing: ${RAW}/${line}.raw" && rm -f ${RAW}/${line}.raw ; done
자신의 확장자로 변경되지 않은 경우 모든 확장자는 소문자여야 한다는 점을 기억하세요.
처음 게시하기 전에 다음 테스트 명령을 실행하세요.
RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "Removing: ${RAW}/${line}.raw" && echo rm -f ${RAW}/${line}.raw ; done
script.bash
또한 이것을 파일에 넣는 경우 &&
및를 s/new 행 ;
으로 바꾸십시오. enter
더 읽기 쉬운 텍스트를 얻으려면.