1. 程式人生 > >linux 複製指定目錄下的全部檔案到另一個目錄中,linux cp 資料夾

linux 複製指定目錄下的全部檔案到另一個目錄中,linux cp 資料夾

linux複製指定目錄下的全部檔案到另一個目錄中
複製指定目錄下的全部檔案到另一個目錄中
檔案及目錄的複製是經常要用到的。linux下進行復制的命令為cp。
假設複製源目錄 為 dir1 ,目標目錄為dir2。怎樣才能將dir1下所有檔案複製到dir2下了
如果dir2目錄不存在,則可以直接使用
cp -r dir1 dir2
即可。
如果dir2目錄已存在,則需要使用
cp -r dir1/. dir2
如果這時使用cp -r dir1 dir2,則也會將dir1目錄複製到dir2中,明顯不符合要求。
ps:dir1、dir2改成對應的目錄路徑即可。

cp -r /home/www/xxx/statics/. /home/www/statics
如果存在檔案需要先刪除
rm -rf /home/www/statics/*
否則會一個個檔案提示你確認,使用cp -rf 也一樣提示

--------------------------------------

linux下cp整個資料夾的檔案到另一個資料夾
cp -ri A/B/* A1/B1/ 回車
若複製過程中詢問是否覆蓋,輸入y按回車,若不想看到提示直接覆蓋使用-rf
另外若A A1不在同一目錄下,最好填絕對路徑,就是/xxx/xxx/A/B/* /xxx/A1/B1/

例項:

cp -ri /home/server/tomcat/* /home/server/test/

cp: target `/home/server/test/' is not a directory
需要先建立目標資料夾
mkdir /home/server/test

--------------------------------------
copy命令的功能是將給出的檔案或目錄拷貝到另一檔案或目錄中,同MSDOS下的copy命令一樣,功能十分強大。
語法: cp [選項] 原始檔或目錄 目標檔案或目錄
說明:該命令把指定的原始檔複製到目標檔案或把多個原始檔複製到目標目錄中。
該命令的各選項含義如下:
- a 該選項通常在拷貝目錄時使用。它保留連結、檔案屬性,並遞迴地拷貝目錄,其作用等於dpR選項的組合。
- d 拷貝時保留連結。
- f 刪除已經存在的目標檔案而不提示。
- i 和f選項相反,在覆蓋目標檔案之前將給出提示要求使用者確認。回答y時目標檔案將被覆蓋,是互動式拷貝。
- p 此時cp除複製原始檔的內容外,還將把其修改時間和訪問許可權也複製到新檔案中。
- r 若給出的原始檔是一目錄檔案,此時cp將遞迴複製該目錄下所有的子目錄和檔案。此時目標檔案必須為一個目錄名。
- l 不作拷貝,只是連結檔案。

需要說明的是,為防止使用者在不經意的情況下用cp命令破壞另一個檔案,如使用者指定的目標檔名已存在,用cp命令拷貝檔案後,這個檔案就會被新原始檔覆蓋,因此,建議使用者在使用cp命令拷貝檔案時,最好使用i選項。
例1
複製指定目錄下的全部檔案到另一個目錄中
檔案及目錄的複製是經常要用到的。linux下進行復制的命令為cp。
假設複製源目錄 為 dir1 ,目標目錄為dir2。怎樣才能將dir1下所有檔案複製到dir2下了
如果dir2目錄不存在,則可以直接使用
cp -r dir1 dir2
即可。
如果dir2目錄已存在,則需要使用
cp -r dir1/. dir2
如果這時使用cp -r dir1 dir2,則也會將dir1目錄複製到dir2中,明顯不符合要求。
ps:dir1、dir2改成對應的目錄路徑即可。
例2
複製指定檔案到指定資料夾
首先建立一個用於測試的目錄,用'tree'命令檢視
可見,目錄中主要包含用於測試的*.txt檔案和用於充當炮灰的*。tes檔案
目標是保持當前的目錄結構,只把txt檔案複製出來

方法一:當不需要的檔案型別較為單一時,可以通過完全複製然後刪除指定型別的檔案完成
Step1 使用命令 cp -r test/ test2 將測試目錄test下所有內容完全複製到test2

Step2 組合使用find及xargs,將*.tes檔案刪除
xargs是給命令傳遞引數的一個過濾器,可以將前一個命令產生的輸出作為後一個命令的引數
命令find test2/ -name '*.tes' |xargs rm -rf, 即將find產生的輸出(test2目錄下的所有tes檔案),作為rm的引數,從而完全刪除
適用場景舉例:把專案檔案備份,要去除其中的.svn檔案,可以採用這種方式

方法二:需要的檔案為單一型別,帶目錄結構複製
這種情況下可以使用tar命令將指定型別的檔案打包,然後解包,同樣需要組合使用find和xargs

Step1 建立目錄test3
mkdir test3

Step2 將指定型別檔案帶目錄結構打包
find test/ -name '*.txt' |xargs tar czf test3.tgz

Step3 解包到目錄test3
tar zxvf test3.tgz -C test3

適用場景:較為普遍,例如可以複製某個Web專案的所有html/jsp/php檔案;或複製其他專案中特定型別的原始檔

轉自:https://www.cnblogs.com/zdz8207/p/linux-cp-dir.html