cp aaa/deep/sea/blob.psd
나는 원해요bbb/deep/sea/blob.psd
deep
복사본이 필요한 디렉터리를 생성하고 파일을 복사하도록 및 sea
디렉터리가 존재하지 않는 경우 어떻게 복사본을 만들 수 있습니까?bbb
이제 나는
No such file or directory
너무 깊어서 바다가 존재하지 않습니다.
도움말 페이지와 기타 질문을 살펴봤지만 아무것도 관심을 끌지 못했습니다.
내가 얻은 가장 가까운 것은 rcp
디렉토리에 대한 것입니다.
rcp -r aaa/deep/sea/ bbb/deep/sea/
이는 전체 디렉토리와 내용을 복사하지만 단일 파일만 원합니다. 그러나 이것을 시도하면cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
답변1
install
프로그램을 사용하는 것은 쉽습니다핵심 도구일반적으로 다음과 같은 빌드 시스템에서 이 목적으로 사용됩니다.자동차 제조업체:
install -D /path/to/source /path/to/destination
install
생성하니 참고해주세요모두경로의 일부는 과 같습니다 . mkdir -p
를 참조하세요 . man install
왜 포함하지 않았는지 궁금하네요왜당신은 이것을하고 싶어합니다. 전화 통화가 mkdir
매우 편리합니다 cp
.
답변2
이 경우 다음 기능을 사용해보십시오.
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
그리고 그것을 다음과 같이 사용하십시오
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
BTW, GNU 에는 옵션이 cp
있습니다 --parents
. 당신이 원하는 것에 정말 가깝지만 꼭 그렇지는 않습니다.
또한 aaa
필요하지 않은 디렉토리도 생성합니다. 그러나 먼저 CD를 사용 aaa
하고 다음과 같이 복사할 수 있습니다.
cd aaa && cp --parents deep/sea/blob.psd ../bbb/
답변3
표준(POSIX/Unix) 명령을 사용하면 다음을 얻을 수 있습니다.
pax -rws ':^:dest/dir/:' file .
답변4
cd aaa
pax -rw deep/sea/blob.psd ../bbb
하나도 없으면 pax
(표준화하기에는 너무 많은 비호환성이 있기 때문에 POSIX에서 cpio 및 tar의 표준 대체품으로 지정함) cpio -p
또는 tar -cf - … | tar -xf -
대신을 사용하세요.