하위 디렉터리의 모든 *.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