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

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

 

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

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

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


方法2:組合使用 find 及 xargs svn

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

(xargs 是給命令傳遞參數的一個過濾器,能夠將前一個命令產生的輸出做爲後一個命令的參數。)
即將 find 產生的輸出(test2 目錄下的全部 example 類型文件),做爲 rm 的參數,從而徹底刪除。測試


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

find . -name *.example -delete

此方法能夠看做是對 方法2 的簡化改進 。命令行

 

 

(二)Linux 複製指定目錄及子目錄下特定類型的文件code

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

方法1:當不須要的文件類型較爲單一時,能夠經過徹底複製而後刪除指定類型的文件完成htm

// Step1 使用以下命令,將測試目錄 test 下全部內容徹底複製到 test2
cp -r test/ test2 
// Step2 組合使用find及xargs,將 *.tes 文件刪除。
find test2/ -name '*.tes' |xargs rm -rf 

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

 

方法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 文件;或複製其餘項目中特定類型的源文件。

相關文章
相關標籤/搜索