1. 程式人生 > >linux復制指定目錄下的全部文件到另一個目錄

linux復制指定目錄下的全部文件到另一個目錄

建議 必須 測試 成對 st3 其中 完成 所有 鏈接

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文件;或復制其他項目中特定類型的源文件

linux復制指定目錄下的全部文件到另一個目錄