디렉터리 차이점 및 삭제

디렉터리 차이점 및 삭제

구조를 유지하면서 디렉터리 B의 파일과 동일한(동일한 이름 및 동일한 해시) 모든 파일을 디렉터리 A에서 (반복적으로) 삭제하는 쉬운 방법이 있습니까?

예를 들어 B/file1이 있으면 A/file1은 삭제되지만 B/d/file1은 있어도 A/file1은 삭제되지 않습니다.

답변1

A의 모든 파일이 B에 존재하도록 하려면 rsync--remove-source-files옵션을 사용하여 B의 파일과 A의 파일을 추가/업데이트한 다음 A에서 원본 파일을 삭제하면 됩니다. rsync모드에서 실행하고 를 --dry-run통해 출력을 파이핑하며 두 디렉터리 구조만 비교하고 동일한 파일을 삭제합니다. 다음을 참조하세요.grepxargsrm -f

Linux/Unix rsync: 전송 후 소스 파일 삭제

rsync --remove-source-files는 소스 파일을 하나씩 삭제합니까, 아니면 rsync가 완료된 후 삭제합니까?

답변2

이런 식으로 할 수 있습니다. 이 코드는 테스트되지 않은 코드입니다. 나는 $A와 $B가 두 개의 디렉토리라고 가정합니다.

(cd $B && find . -type f -print) | (cd $A && while read f; do /bin/rm -f "${f}"; done;)

방금 이것을 시도했지만 명령을 실행하는 대신 stdout에 에코하여 제대로 작동하는 것 같았습니다.

$ (cd $B && find . -type f -print) | (cd $A && while read f; do echo /bin/rm -f "${f}";done;)
/bin/rm -f ./1
/bin/rm -f ./2
/bin/rm -f ./3
/bin/rm -f ./4

원하는 결과가 나타나면 다시 실행하되 명령에서 "echo"라는 단어를 생략하세요.

관련 정보