Files

將文件及其父目錄複製到目標目錄

  • June 1, 2022

源文件 :~/SCRIPTS/script

目標目錄:~/TMP/LAB

命令應該是這樣的:<command> <option> ~/SCRIPTS/script ~/TMP/LAB

命令後的期望結果:~/TMP/LAB/SCRIPTS/script

做沒有意義

<command> <option> ~/SCRIPTS/script  ~/TMP/LAB/SCRIPTS/

因為每次更改源文件時都必須編輯命令。基本上我希望命令根據它在源中找到的結構創建目錄,而不是基於我想要創建的目標。

該命令應:

  1. 創建 ~/TMP/LAB/SCRIPTS/
  2. 複製 ~/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目錄的目錄來避免這種情況。

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