"rmlint"를 사용하여 한 위치에서만 중복 항목을 제거하고 다른 위치는 변경되지 않은 상태로 유지하는 방법은 무엇입니까?

"rmlint"를 사용하여 한 위치에서만 중복 항목을 제거하고 다른 위치는 변경되지 않은 상태로 유지하는 방법은 무엇입니까?

/path/to/a두 개의 위치 가 있고 /path/to/b두 경로 모두에서 중복 파일을 찾아 /path/to/b프로젝트의 항목만 삭제해야 합니다. rmlint상당히 큰 삭제 스크립트를 생성하지만 여기에는 두 경로(비어 있는 폴더 포함) 모두에서 삭제할 항목이 포함되어 있습니다.

rmlint이 결과를 얻기 위해 다음 매개변수를 사용하여 실행했는데, 삭제 대상으로만 선택될 것으로 가정 합니다 /path/to/a.

rmlint -g -e -S p /path/to/a /path/to/b

답변1

문서에 따르면,태그만 있으면 됩니다.

태그를 사용하려면 //. // 구분 기호 뒤의 모든 경로는 "태그"로 간주되며 가능한 경우 원시 경로로 간주됩니다.

예를 들어 rmlint a // b"a" 경로를 중복으로 표시하고 "b"를 원래 경로로 표시합니다.

-k표시된 파일을 절대로 삭제하지 않으려면 ( ) 옵션이 있습니다 --keep-all-tagged. 또 다른 옵션은 표시된 경로에 원래 경로가 있는 중복 항목만 찾는 -m( )입니다.--must-match-tagged

(문서에서 가져온) 간단한 예는 다음과 같습니다. 오래된 백업이 들어 있는 휴대용 백업 드라이브가 있습니다. 방금 홈 폴더를 새 백업 드라이브에 백업했습니다. 이전 백업 드라이브를 다시 포맷하고 다른 용도로 사용하려고 합니다. 하지만 먼저 이전 드라이브에 다른 곳에서는 찾을 수 없는 것이 있는지 확인하고 싶습니다. 이전 드라이브는 에 설치됩니다 /media/portable.

$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~

도움이 되었기를 바랍니다!

답변2

내가 한 일은 다음과 같습니다.

$ rmlint -g sourceDir // referenceDir -km
  • g: 진행률 표시줄
  • k: --모든 태그 유지
  • m: --표시와 일치해야 함

그러나 소스 디렉터리가 여러 개인 경우 --must-match-tagged 옵션이 때때로 존중되지 않는 것으로 나타났습니다.

관련 정보