Files
將文件及其父目錄複製到目標目錄
源文件 :
~/SCRIPTS/script
目標目錄:
~/TMP/LAB
命令應該是這樣的:
<command> <option> ~/SCRIPTS/script ~/TMP/LAB
命令後的期望結果:
~/TMP/LAB/SCRIPTS/script
做沒有意義
<command> <option> ~/SCRIPTS/script ~/TMP/LAB/SCRIPTS/
因為每次更改源文件時都必須編輯命令。基本上我希望命令根據它在源中找到的結構創建目錄,而不是基於我想要創建的目標。
該命令應:
- 創建 ~/TMP/LAB/SCRIPTS/
- 複製 ~/SCRIPTS/script 到它。
cp --parents
這樣做,但僅在複製目錄時不知道
install
能不能幫到我?或者也許rsync
?
cp --parents
如果你有 GNU應該可以使用cp
。bash-5.1$ tree . |-- SCRIPTS | |-- otherfile | `-- script `-- TMP `-- LAB 3 directories, 2 files
bash-5.1$ cp --parents SCRIPTS/script TMP/LAB/ bash-5.1$ tree . |-- SCRIPTS | |-- otherfile | `-- script `-- TMP `-- LAB `-- SCRIPTS `-- script 4 directories, 3 files
您建議使用
rsync
,如果您使用它的-R
(--relative
) 選項,您可以這樣做:bash-5.1$ rm -r TMP/LAB/SCRIPTS/ bash-5.1$ rsync -R SCRIPTS/script TMP/LAB/ bash-5.1$ tree . |-- SCRIPTS | |-- otherfile | `-- script `-- TMP `-- LAB `-- SCRIPTS `-- script 4 directories, 3 files
請注意,在這兩種變體中,使用絕對路徑
~/SCRIPTS/script
作為源而不是相對路徑SCRIPTS/script
將創建與目標處的絕對路徑相對應的目錄,並且您最終會得到類似TMP/LAB/home/myself/SCRIPTS/script
.您可以通過首先將目錄更改為包含該
SCRIPTS
目錄的目錄來避免這種情況。