최대 깊이가 고정된 하위 디렉터리의 rsync 특정 파일 형식만

최대 깊이가 고정된 하위 디렉터리의 rsync 특정 파일 형식만

하위 디렉터리의 모든 *.sh 파일을 동기화하고 싶습니다. 이 명령을 시도했지만 특정 파일 형식뿐만 아니라 디렉터리의 모든 파일이 동기화됩니다.

rsync -vr -n --include="*.sh" --exclude="*/*/" --prune-empty-dirs /source /target

나는 또한 다음과 같은 필터를 추가하려고 시도했습니다.

--filter="+ *.sh"

그러나 그것은 결과를 바꾸지 않았습니다. 또 다른 필터

rsync -vr -n --include="*.sh" --filter="-! *.sh" --exclude="*/*/" --prune-empty-dirs

나에게 빈 목록을 주었다. "*"를 제외하면 "*.sh"도 제외됩니다... 무엇이 문제인가요? 감사해요!

깊이는 1이어야 합니다. 하위 디렉터리의 이름을 알 수 없습니다. 예를 들어,

home/subdirectory1/subsubdirectory/subsubsubdirectory/file.sh
home/subdirectory1/file1.sh
home/subdirectory2/file2.sh
home/subdirectory3/file

위의 예에서 rsync디렉터리 계층 구조는 홈 디렉터리부터 시작하여 파일과 파일만 동기화되어야 합니다 file1.sh.file2.sh

답변1

귀하의 예가 귀하의 설명과 일치하지 않는 것 같습니다. 내 생각에 당신이 원한다고 말한 것은 이것이다.

  • *.sh사용자 디렉터리 바로 아래에 있는 알 수 없는 하위 디렉터리의 모든 파일과 일치합니다./home
  • 파일을 대상의 알 수 없는 하위 디렉터리에 넣습니다.
  • /home대상 경로에 포함되지 않음

위의 내용으로 판단하면 /home이 명령은 모든 파일을 일치시키고 */*.sh해당 파일과 해당 부분 경로를 대상에 복사합니다. ( --dry-run예상 결과에 만족한다면 제거하세요.)

rsync --dry-run -avR /home/./*/*.sh /target

예를 들어 /home/subdir/file.sh다음 위치에 복사됩니다./target/subdir/file.sh

관련 정보