我常用的find命令

來源:互聯網
上載者:User

索引

基礎

exec執行命令

檔案名稱或尋找

忽略檔案

用find尋找以abc開頭,但不包含“.”的檔案的方法

 

find . -name "*.c" 在目前的目錄及其子目錄(用“.”表示)中尋找任何副檔名為“c”的檔案

 

find . -name "*Iden*" -exec rm {} \;

 

find ./  \( -iname "*.c" -or -iname "*.cc" \)   尋找以.c或.cc結尾的檔案  忽略大小寫

find -regex ".*\.\(xls\|csv\)"   尋找以xls 或csv 結尾的檔案

 find -name "*.xls" -o -name "*.csv"  同上

 

 

find / -path /mnt -prune -o -regex ".*\.\(cc\|h\)"

find / \( -path /dev -o -path /var -o -path /mnt \) -prune -o -name "*.cc"|wc -l

 

 

用find尋找以abc開頭,但不包含“.”的檔案的方法

 

如下三種方法都可以:

 

1.

 

  1. find . -name "abc*" ! -name "*.*" -print

 

2.

 

  1. find . -regex '.*/abc[^.]*'

 

3.

 

  1. find . -name "*.*" -o -name "abc*" -print

 

第一種方法是最容易理解的了,第二個 -name前的 ! 號表示 -not, 與-not的意義是相同的,所以也可以寫成:

 

find . -name "abc*" -not -name "*.*" -print

 

 

 

第二種方法: 因為用-name選項的時候,find不支援Regex,此時要使用 -regex選項

 

正則式: '.*/abc[^.]*'

 

.*/ 表示在目前的目錄及下及目錄中找

 

[^.]* 表示abc後匹配任一字元,除了.

 

 

 

第三種方法看起來很難理解

 

因為-o 是 or 的意思,也就是或

 

猛的看起來好像是說找到所有含有. 或者以abc開頭的

 

其實不然

 

這兩個-name構成了這樣形式的運算式

 

Exp1 or Exp2

 

如果Exp1 為真的話,就不會再判斷Exp2

 

如果Exp1為假,才執行Exp2,非常類似於C語言中的 " || " 符號

 

所以,如果匹配到有.的檔案名稱,則不會執行後面的了,所以-print此時不會列印

 

 

 

今天也意外的發現了一點

 

find [path...] [expression]

 

在最後可以用 -exec command

 

如下:

 

find . -name "abc*" -exec ls {} /;

 

以前一直不明白後面加個 {} /;是幹什麼的

 

今天總算知道了

 

其實{} 表示匹配到前面的檔案

 

所以,你也可以這樣用:

 

find . -name "abc*" -exec mv {} {}.old /;

 

此時所完成的功能就是:

 

將所有以abc開關的檔案,全部在後面加上 .old 尾碼

 

2  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.