디렉터리를 미러링하려고 합니다.그리고특정 디렉터리의 파일 구조입니다. 그러나 이미지 파일에 크기가 없기를 원합니다. 예를 들어 다음과 같은 디렉터리 트리가 있다고 가정해 보겠습니다.
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
재귀적으로 디렉터리 복사
find
OP가 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