Directory

如何復製文件並同時創建目標目錄?

  • February 28, 2019

cp aaa/deep/sea/blob.psd我想bbb/deep/sea/blob.psd

deep如果和sea目錄不存在,我該如何進行複制,bbb以便副本創建所需的目錄並複製文件?

現在我變得

No such file or directory很深,海洋不存在。

我查看了 man 幫助頁面和其他問題,但沒有任何問題。

我最接近的是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

順便說一句,GNUcp有一個--parents選擇。它真的很接近你想要的,但不完全是。

它還將創建aaa您似乎不需要的目錄。但是,您可以先 cd 到aaa並複制如下:

cd aaa && cp --parents deep/sea/blob.psd ../bbb/

使用coreutilsinstall中的程序很容易,該程序通常由automake等建構系統用於此目的:

install -D /path/to/source /path/to/destination

請注意,就像install創建路徑的所有mkdir -p部分一樣,請參閱man install. 我很好奇你為什麼不包括你為什麼要這樣做。打電話mkdircp容易。

引用自:https://unix.stackexchange.com/questions/41770