내가 원하는 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
답변
이러한 상황에서 다음 기능을 사용하십시오.
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/
답변
automake 와 같은 빌드 시스템에서 일반적 으로이 목적으로 사용되는 coreutils 의 install
프로그램을 사용하는 것은 쉽습니다 .
install -D /path/to/source /path/to/destination
경로와 마찬가지로 경로의 모든 부분 을 install
만듭니다 ( 참고 자료 참조) . 왜 당신이 왜 그렇게하고 싶지 않은지 궁금 합니다. 전화 하고 매우 쉽습니다.mkdir -p
man install
mkdir
cp
답변
표준 (POSIX / Unix) 명령을 사용하면 다음과 같은 이점이 있습니다.
pax -rws ':^:dest/dir/:' file .
답변
을 사용하여 수행하는 방법을 cp
모르지만 다음을 사용하는 것이 가능합니다 rsync
.
$ rsync sourcefile dir/
dir
존재하지 않아도되는 디렉토리는 어디에 있습니까 ? 다른 명령을 사용하여 동일한 것을 달성하는 다른 많은 방법이 있습니다.
답변
cd aaa
pax -rw deep/sea/blob.psd ../bbb
가지고 있지 않은 경우 pax
(POSIX에서 명령하기 때문에 표준화 할 수있는 호환성이 너무 많은 cpio 및 tar의 표준 대체품으로 사용) cpio -p
또는 tar -cf - … | tar -xf -
대신 사용하십시오.