Linux復制指定目錄及子目錄下特定類型的文件


首先建立一個用於測試的目錄,用'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