파일을 복사하는 동안 대상 디렉터리를 만드는 방법은 무엇입니까?

파일을 복사하는 동안 대상 디렉터리를 만드는 방법은 무엇입니까?

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 -대신을 사용하세요.

관련 정보