
사용하면 find . -type d
검색에서 상위 디렉터리나 하위 폴더에 있는 모든 파일을 제외합니다. 모든 폴더와 하위 폴더의 파일을 제외하고 폴더만 복사되도록 -exec cp -p
확장 하고 싶습니다 . rsync "{}" destination \;
.pdf 또는 .jpg와 같은 확장자로 제외하는 방법만 알고 있는데 파일이 여러 개이고 디렉터리가 수백 개라면 어떻게 될까요? 이 문제를 어떻게 처리해야 합니까?
감사해요
답변1
find
+ mkdir
+ touch
댓글에서 언급했듯이 작동합니다
find . -type d -exec sh -c 'dir="{}"; mkdir -p "destination/$dir" && touch -cr "$dir" "destination/$dir"' \;
언급된 Ipor 명령은 touch -r <olddir> <newdir>
olddir에서 수정 시간을 가져오고(olddir을 변경하지 않고) newdir에 동일한 시간을 설정합니다. 추가하면 -c
실수로 새 파일이 생성되지 않도록 보장됩니다.find가 상대 경로를 인쇄할 것으로 예상하므로 소스 디렉터리에서 실행해야 합니다.각 디렉토리에 대해 쉘을 생성하므로 약간 느려지므로 아래 대안을 선호할 수 있습니다.
선택하다:
cp --attributes-only -pr ./ destination && find destination -type f -empty -delete
모든 파일과 디렉토리를 재귀적으로 "복사" 하여 cp
타임스탬프는 보존하지만 내용은 보존하지 않습니다. 그래서 빠릅니다. 파일 생성을 건너뛰는 것만큼 빠르지는 않지만 빠릅니다. 그런 다음 find
빈 파일을 삭제하고 디렉터리 구조를 그대로 둡니다.