제한된 기능 테스트 만 수행 했으므로이 명령 (--dry-run)에주의하십시오.
rsync -avPr --ignore-existing --remove-source-files src/ dest
후행 /은 src 자체를 복사하는 대신 src로 되풀이되므로 기존 경로를 유지해야합니다.
--remove-source-files 플래그와 함께 --ignore-existing 플래그를 사용하면 src에서 dest로 동기화 된 src의 파일, 즉 이전에 dest에만 존재하지 않는 파일 만 삭제됩니다.
동기화되지 않은 파일, 즉 src /에서와 같이 dest /에 이미 존재하는 파일을 삭제하려면 다음을 사용할 수 있습니다.
for file in `find src/ -type f`; do diff $file `echo $file | sed 's/src/dest/'` && rm $file || echo $file; done
또는
find src -type f -exec bash -c 'cmp -s "$0" "${0/#src/dest}" && rm "$0"' {} \;
파일 이름에 공백 / 줄 바꾸기 /가 포함될 수있는 경우 ... 특수 문자에 대한 Gilles의 의견과 관련하여 분명히 염두에 두어야 할 솔루션이 많이 있습니다. -i를 rm에 전달하면 모든 삭제 전에 프롬프트가 표시됩니다. src / 또는 그 상위 경로를 찾기 위해 제공되는 경우, 완전한 경로는 인용없이 diff 및 rm 명령으로 모든 파일 이름을 올바르게 처리해야합니다.