많은 파일이 포함된 디렉토리가 있습니다. 내가 관심을 갖는 유일한 것은 확장자가 .jar
.인 파일입니다. 그러나 해당 디렉토리에는 다른 파일이 있습니다.
소스 디렉토리가 있습니다오직 .jar
문서. 나는 다음과 같은 것을 달성하고 싶습니다:
rm destdir/*.jar
cp sourcedir/*.jar destdir
그런데 사실은 이러지 않았으면 좋겠어제거하다이미 존재하는 파일(이미 올바른 파일인 경우)
즉, 다음과 같은 명령을 실행할 수 있기를 원합니다.
.jar
에 존재sourcedir
하지만 존재하지 않는 파일 의 경우destdir
해당 파일을 복사하세요.- 및 에 있는 파일의 경우 의
.jar
복사본이 의 복사본과 일치하는지 확인하고 일치하지 않으면 덮어씁니다.sourcedir
destdir
destdir
sourcedir
.jar
존재하는 모든destdir
것에 대해아니요sourcedir
, 파일을 삭제하세요 .- 그 안에 있는 다른 파일
destdir
(확장자 없음 ).jar
은 무시하세요. 삭제하거나 변경하지 마세요.
그것~인 것 같다통과해야 합니다 rsync
. 어떻게 해야 합니까?
답변1
당신은 그것을 사용할 수 있습니다 :
rsync -av --include='*.jar' --exclude='*' --delete \
sourcedir/ destdir/
이 옵션은 링크 및 타임스탬프와 같은 항목을 보존하는 보관 모드입니다( 전체 지침은 -a
페이지 참조 ). man
이는 -v
자세한 정보를 제공하기 위한 것입니다. 로그에 관심이 없으면 제거하세요.
이것은 처음 세 가지 옵션을 처리해야 합니다. 이 --delete
옵션은 제외된 파일을 무시하면서 네 번째 요구 사항을 충족합니다.
.jar
파일이 포함된 디렉토리를 포함하려면 다음을 사용할 수 있습니다.
rsync -av --include='*.jar' --include='*/' --exclude='*' --delete \
sourcedir/ destdir/
여기에 나온 답변을 바탕으로 추가 질문이 있는 경우 도움이 될 것입니다.Rsync 필터: 하나의 패턴만 복사