디렉토리 구조와 크기가 0인 파일을 미러링하는 방법은 무엇입니까?

디렉토리 구조와 크기가 0인 파일을 미러링하는 방법은 무엇입니까?

디렉터리를 미러링하려고 합니다.그리고특정 디렉터리의 파일 구조입니다. 그러나 이미지 파일에 크기가 없기를 원합니다. 예를 들어 다음과 같은 디렉터리 트리가 있다고 가정해 보겠습니다.

original_folder
├── images
│   ├── image1.jpg         (2 MB)
│   ├── image2.jpg         (3 MB)
├── videos
│   ├── video1.mp4         (300 MB)
│   ├── video2.mp4         (400 MB)

나는 다음과 같은 출력을 원합니다.

mirrored_folder
├── images
│   ├── image1.jpg         (0 b)
│   ├── image2.jpg         (0 b)
├── videos
│   ├── video1.mp4         (0 b)
│   ├── video2.mp4         (0 b)

다음 명령을 사용해 보았습니다 original_folder.

cd original_folder
find . -name '*' -exec touch ../mirrored_folder/'{}' \;

그러나 이 명령은 실행을 시도합니다 touch ../mirrored_folder/./images/image1.jpg. 명령을 혼동하는 점에 유의하십시오. 내가 하고 싶은 일을 어떻게 이룰 수 있나요?

답변1

GNU cp(에서핵심 도구) 다음과 같이 수행할 수 있습니다.

cp -r --attributes-only original_folder/* mirrored_folder/

~에서남자 CP:

--attributes-only

    파일 데이터는 복사되지 않고 속성만 복사됩니다.
-R,-r,--recursive
    재귀적으로 디렉터리 복사


findOP가 MacOS에서 xe라고 말한 대로 명령을 사용 하고 cp명령에는 --attributes-only옵션이 없습니다.

find original_folder/ -type d -exec \
    sh -c 'mkdir -p mirrored_folder/${1#*/}' _ {} \; \
-o -type f -exec \
    sh -c 'touch mirrored_folder/${1#*/}' _ {} \;

이 솔루션은 속성(기본값: 모드, 소유권, 타임스탬프)을 유지하는 솔루션과 달리 find새 디렉터리와 파일을 생성합니다 .cp

답변2

이것은 작동하는 것 같습니다:

cd dest || exit
(cd orig && find . -type d -print0) | xargs -r0 mkdir -p
(cd orig && find . -type f -print0) | xargs -r0 touch

관련 정보