我不允許在我正在處理的集群上使用 rsync,所以我需要使用 cp。我想復制一個大目錄,包括所有檔案和子檔案夾等,但沒有任何名為“outdir”的檔案夾。我試過了, cp -r -v ./!(outdir) ../target-directory/
但它仍然復制更深層目錄中的所有檔案夾和內容,名稱為 outdir。它只包含最高目錄中的 outdir 檔案夾。
我也嘗試過,cp -r ./*/!(outdir) ../target-directory/但是那個將所有檔案復制到檔案夾中而不保留任何層次結構或檔案夾等。
我也嘗試了某些 find 命令,但沒有奏效,但也許我只是在做一些愚蠢的事情。我是 bash 的初學者,所以如果你能解釋你的答案以及標志等等,那真的會很有幫助,我現在一直在努力,我認為不應該那么難。
uj5u.com熱心網友回復:
代替cp,您可以使用tarwith 選項--exclude來控制您要復制或不復制的內容。
完整的命令是:
tar --exclude="outdir" -cvpf - . | (cd TARGET_DIRECTORY; tar -xpf -)
- 因此,任何包含“outdir”模式的路徑都將被排除。
- 如果沒有該
--exclude選項,它將在 TARGET_DIRECTORY 下復制當前目錄的整個結構。 - 您可以將
.第一個 tar 中的替換為所需的源目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357976.html
