linux復制文件到指定的文件夾


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM