파일을 복사하고 동시에 대상 디렉토리를 생성하려면 어떻게 해야 합니까?

파일을 복사하고 동시에 대상 디렉토리를 생성하려면 어떻게 해야 합니까?

나는 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

그런데 GNU에는 옵션이 cp있습니다 --parents. 원하는 것과 정말 가깝지만 정확하지는 않습니다. 또한 필요하지 않은 디렉토리
도 생성됩니다 . aaa그러나 먼저 aaa다음과 같이 CD로 복사할 수 있습니다.

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(표준화하기에는 너무 많은 비호환성이 있는 cpio 및 tar의 표준 대체품으로 POSIX에서 의무화함) cpio -p또는 tar -cf - … | tar -xf -대신을 사용하십시오.

관련 정보