用Linux命令行實現刪除和復制指定類型的文件


(一)Linux 刪除當前目錄及子目錄中所有某種類型的文件

 

方法1 : 此方法不能處理目錄中帶空格的那些。

rm -rf `find . -name "*.example"`

Linux的文件名(目錄也是一種文件)不建議帶空格,命令行中不好處理這個空格。


方法2:組合使用 find 及 xargs

find test2/ -name '*.example' |xargs rm -rf

(xargs 是給命令傳遞參數的一個過濾器,可以將前一個命令產生的輸出作為后一個命令的參數。)
即將 find 產生的輸出(test2 目錄下的所有 example 類型文件),作為 rm 的參數,從而完全刪除。


方法3: 組合使用 find 和 delete 命令

find . -name *.example -delete

此方法可以看作是對 方法2 的簡化改進 。

 

 

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

首先建立一個用於測試的目錄,目錄中包含用於測試的 *.txt 文件和 *.tes 文件。
目標是保持當前的目錄結構,只把 txt 文件復制出來。

方法1:當不需要的文件類型較為單一時,可以通過完全復制然后刪除指定類型的文件完成

// Step1 使用如下命令,將測試目錄 test 下所有內容完全復制到 test2
cp -r test/ test2 
// Step2 組合使用find及xargs,將 *.tes 文件刪除。
find test2/ -name '*.tes' |xargs rm -rf 

適用場景舉例:把項目文件備份,要去除其中的 .svn 文件,可以采用這種方式。

 

方法2:需要的文件為單一類型,帶目錄結構復制
這種情況下可以使用 tar 命令將指定類型的文件打包,然后解包。

// 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