linux 刪除所有字尾名相同的檔案

何麒發表於2015-01-26


個人經歷:系統centos 6.3

方法一:
find 目錄 -name "*.abc" | xargs rm
命令很危險, 你先執行前半段試試看 是不是你要刪除的檔案, 在整條執行

方法二:
find . -name '*.exe' -type f -print -exec rm -rf {} \;
(1) "."    表示從當前目錄開始遞迴查詢
(2) “ -name '*.exe' "根據名稱來查詢,要查詢所有以.exe結尾的資料夾或者檔案
(3) " -type f "查詢的型別為檔案
(4) "-print" 輸出查詢的檔案目錄名
(5) 最主要的是是-exec了,-exec選項後邊跟著一個所要執行的命令,表示將find出來的檔案或目錄執行該命令。
     exec選項後面跟隨著所要執行的命令或指令碼,然後是一對兒{},一個空格和一個\,最後是一個分號

-----------------------------------------------------------

find: paths must precede expression Usage: find [-H] [-L] [-P] [path...] [expression]

今天在跑指令碼的時候看到如下報錯:

find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

然後就上網查了一下,結果搜尋到一篇,大概是這樣說的:多檔案的查詢的時候需要增加單引號

而我之前一直都是用的雙引號,也沒有遇到問題,這次卻報錯了~

ssh $ip "cd $path;find . -name'access.$month*.log' -print -exec zip -r access.$month.zip {} \;"

修改成單引號後,木有再見報錯~

例子說明:

  1. # echo *  
  2. 1.txt 2.txt 3.txt 4.txt  
  3. # echo '*'  
  4. *  
  5. # echo \*  
  6. *  

想要星號不被展開就需要加上括號或者反斜槓轉義,知道了這些我們就知道該怎麼find了

<div bg_html"="" style="word-wrap: break-word;">
  1. # find . -name '*.txt'  
  2. find . -name '*.txt'  
  3. ./4.txt  
  4. ./2.txt  
  5. ./3.txt  
  6. ./1.txt  
  7. #或者使用反斜槓  
  8.  find . -name \*.txt  
  9. ./4.txt  
  10. ./2.txt  
  11. ./3.txt  
  12. ./1.txt  

相關文章