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