每天一個linux命令(22):find 命令的參數詳解

find一些常用參數的一些常用實例和一些具體用法和注意事項。

1.使用name選項:

文件名選項是find命令最常用的選項,要么單獨使用該選項,要么和其他選項一起使用。??可以使用某種文件名模式來匹配文件,記住要用引號將文件名模式引起來。??不管當前路徑是什么,如果想要在自己的根目錄$HOME中查找文件名符合*.log的文件,使用~作為?'pathname'參數,波浪號~代表了你的$HOME目錄。

find?~?-name?"*.log"?-print??

想要在當前目錄及子目錄中查找所有的‘?*.log‘文件,可以用:?

find?.?-name?"*.log"?-print??

想要的當前目錄及子目錄中查找文件名以一個大寫字母開頭的文件,可以用:??

find?.?-name?"[A-Z]*"?-print??

想要在/etc目錄中查找文件名以host開頭的文件,可以用:??

find?/etc?-name?"host*"?-print??

想要查找$HOME目錄中的文件,可以用:??

find?~?-name?"*"?-print?或find?.?-print??

要想讓系統高負荷運行,就從根目錄開始查找所有的文件。??

find?/?-name?"*"?-print??

如果想在當前目錄查找文件名以一個個小寫字母開頭,最后是4到9加上.log結束的文件:??

命令:

find?.?-name?"[a-z]*[4-9].log"?-print

輸出:

[root@localhost?test]#?ll

總計?316

-rw-r--r--?1?root?root?302108?11-13?06:03?log2012.log

-rw-r--r--?1?root?root?????61?11-13?06:03?log2013.log

-rw-r--r--?1?root?root??????0?11-13?06:03?log2014.log

-rw-r--r--?1?root?root??????0?11-13?06:06?log2015.log

drwxr-xr-x?6?root?root???4096?10-27?01:58?scf

drwxrwxr-x?2?root?root???4096?11-13?06:08?test3

drwxrwxr-x?2?root?root???4096?11-13?05:50?test4

[root@localhost?test]#?find?.?-name?"[a-z]*[4-9].log"?-print

./log2014.log

./log2015.log

./test4/log2014.log

[root@localhost?test]#

?

2.用perm選項:

按照文件權限模式用-perm選項,按文件權限模式來查找文件的話。最好使用八進制的權限表示法。??

如在當前目錄下查找文件權限位為755的文件,即文件屬主可以讀、寫、執行,其他用戶可以讀、執行的文件,可以用:??

[root@localhost?test]#?find?.?-perm?755?-print

.

./scf

./scf/lib

./scf/service

./scf/service/deploy

./scf/service/deploy/product

./scf/service/deploy/info

./scf/doc

./scf/bin

[root@localhost?test]#

?

還有一種表達方法:在八進制數字前面要加一個橫杠-,表示都匹配,如-007就相當于777,-005相當于555,

命令:

find?.?-perm?-005

輸出:

[root@localhost?test]#?ll

總計?316

-rw-r--r--?1?root?root?302108?11-13?06:03?log2012.log

-rw-r--r--?1?root?root?????61?11-13?06:03?log2013.log

-rw-r--r--?1?root?root??????0?11-13?06:03?log2014.log

-rw-r--r--?1?root?root??????0?11-13?06:06?log2015.log

drwxr-xr-x?6?root?root???4096?10-27?01:58?scf

drwxrwxr-x?2?root?root???4096?11-13?06:08?test3

drwxrwxr-x?2?root?root???4096?11-13?05:50?test4

[root@localhost?test]#?find?.?-perm?-005

.

./test4

./scf

./scf/lib

./scf/service

./scf/service/deploy

./scf/service/deploy/product

./scf/service/deploy/info

./scf/doc

./scf/bin

./test3

[root@localhost?test]#

?

3.忽略某個目錄:

如果在查找文件時希望忽略某個目錄,因為你知道那個目錄中沒有你所要查找的文件,那么可以使用-prune選項來指出需要忽略的目錄。在使用-prune選項時要當心,因為如果你同時使用了-depth選項,那么-prune選項就會被find命令忽略。如果希望在test目錄下查找文件,但不希望在test/test3目錄下查找,可以用:??

命令:

find?test?-path?"test/test3"?-prune?-o?-print

輸出:

[root@localhost?soft]#?find?test?-path?"test/test3"?-prune?-o?-print

test

test/log2014.log

test/log2015.log

test/test4

test/test4/log2014.log

test/test4/log2013.log

test/test4/log2012.log

test/scf

test/scf/lib

test/scf/service

test/scf/service/deploy

test/scf/service/deploy/product

test/scf/service/deploy/info

test/scf/doc

test/scf/bin

test/log2013.log

test/log2012.log

[root@localhost?soft]#

?

4.使用find查找文件的時候怎么避開某個文件目錄:?

實例1:在test?目錄下查找不在test4子目錄之內的所有文件

命令:

find?test?-path?"test/test4"?-prune?-o?-print

輸出:

[root@localhost?soft]#?find?test

test

test/log2014.log

test/log2015.log

test/test4

test/test4/log2014.log

test/test4/log2013.log

test/test4/log2012.log

test/scf

test/scf/lib

test/scf/service

test/scf/service/deploy

test/scf/service/deploy/product

test/scf/service/deploy/info

test/scf/doc

test/scf/bin

test/log2013.log

test/log2012.log

test/test3

[root@localhost?soft]#?find?test?-path?"test/test4"?-prune?-o?-print

test

test/log2014.log

test/log2015.log

test/scf

test/scf/lib

test/scf/service

test/scf/service/deploy

test/scf/service/deploy/product

test/scf/service/deploy/info

test/scf/doc

test/scf/bin

test/log2013.log

test/log2012.log

test/test3

[root@localhost?soft]#

?

說明:

find?[-path?..]?[expression]?

在路徑列表的后面的是表達式?

-path?"test"?-prune?-o?-print?是?-path?"test"?-a?-prune?-o?-print?的簡寫表達式按順序求值,?-a?和?-o?都是短路求值,與?shell?的?&&?和?||?類似如果?

-path?"test"?為真,則求值?-prune?,?-prune?返回真,與邏輯表達式為真;否則不求值?-prune,與邏輯表達式為假。如果?-path?"test"?-a?-prune?為假,則求值?-print?,-print返回真,或邏輯表達式為真;否則不求值?-print,或邏輯表達式為真。?

這個表達式組合特例可以用偽碼寫為:

if?-path?"test"?then??

-prune??

else??

-print??

?

實例2:避開多個文件夾:

命令:

find?test?\(?-path?test/test4?-o?-path?test/test3?\)?-prune?-o?-print?

輸出:

[root@localhost?soft]#?find?test?\(?-path?test/test4?-o?-path?test/test3?\)?-prune?-o?-print

test

test/log2014.log

test/log2015.log

test/scf

test/scf/lib

test/scf/service

test/scf/service/deploy

test/scf/service/deploy/product

test/scf/service/deploy/info

test/scf/doc

test/scf/bin

test/log2013.log

test/log2012.log

[root@localhost?soft]#

?

說明:

圓括號表示表達式的結合。??\?表示引用,即指示?shell?不對后面的字符作特殊解釋,而留給?find?命令去解釋其意義。??

實例3:查找某一確定文件,-name等選項加在-o?之后

命令:

find?test?\(-path?test/test4?-o?-path?test/test3?\)?-prune?-o?-name?"*.log"?-print

輸出:

[root@localhost?soft]#?find?test?\(?-path?test/test4?-o?-path?test/test3?\)?-prune?-o?-name?"*.log"?-print

test/log2014.log

test/log2015.log

test/log2013.log

test/log2012.log

[root@localhost?soft]#

?

5.使用user和nouser選項:

按文件屬主查找文件:

實例1:在$HOME目錄中查找文件屬主為peida的文件?

命令:

find?~?-user?peida?-print??

實例2:在/etc目錄下查找文件屬主為peida的文件:?

命令:

find?/etc?-user?peida?-print??

說明:

實例3:為了查找屬主帳戶已經被刪除的文件,可以使用-nouser選項。在/home目錄下查找所有的這類文件

命令:

find?/home?-nouser?-print

說明:

這樣就能夠找到那些屬主在/etc/passwd文件中沒有有效帳戶的文件。在使用-nouser選項時,不必給出用戶名;?find命令能夠為你完成相應的工作。

?

6.使用group和nogroup選項:

就像user和nouser選項一樣,針對文件所屬于的用戶組,?find命令也具有同樣的選項,為了在/apps目錄下查找屬于gem用戶組的文件,可以用:??

find?/apps?-group?gem?-print??

要查找沒有有效所屬用戶組的所有文件,可以使用nogroup選項。下面的find命令從文件系統的根目錄處查找這樣的文件:

find?/?-nogroup-print

?

7.按照更改時間或訪問時間等查找文件:

如果希望按照更改時間來查找文件,可以使用mtime,atime或ctime選項。如果系統突然沒有可用空間了,很有可能某一個文件的長度在此期間增長迅速,這時就可以用mtime選項來查找這樣的文件。??

用減號-來限定更改時間在距今n日以內的文件,而用加號+來限定更改時間在距今n日以前的文件。??

希望在系統根目錄下查找更改時間在5日以內的文件,可以用:

find?/?-mtime?-5?-print

為了在/var/adm目錄下查找更改時間在3日以前的文件,可以用:

find?/var/adm?-mtime?+3?-print

?

8.查找比某個文件新或舊的文件:

如果希望查找更改時間比某個文件新但比另一個文件舊的所有文件,可以使用-newer選項。

它的一般形式為:??

newest_file_name?!?oldest_file_name??

其中,!是邏輯非符號。??

實例1:查找更改時間比文件log2012.log新但比文件log2017.log舊的文件

命令:

find?-newer?log2012.log?!?-newer?log2017.log

輸出:

[root@localhost?test]#?ll

總計?316

-rw-r--r--?1?root?root?302108?11-13?06:03?log2012.log

-rw-r--r--?1?root?root?????61?11-13?06:03?log2013.log

-rw-r--r--?1?root?root??????0?11-13?06:03?log2014.log

-rw-r--r--?1?root?root??????0?11-13?06:06?log2015.log

-rw-r--r--?1?root?root??????0?11-16?14:41?log2016.log

-rw-r--r--?1?root?root??????0?11-16?14:43?log2017.log

drwxr-xr-x?6?root?root???4096?10-27?01:58?scf

drwxrwxr-x?2?root?root???4096?11-13?06:08?test3

drwxrwxr-x?2?root?root???4096?11-13?05:50?test4

[root@localhost?test]#?find?-newer?log2012.log?!?-newer?log2017.log

.

./log2015.log

./log2017.log

./log2016.log

./test3

[root@localhost?test]#

?

實例2:查找更改時間在比log2012.log文件新的文件??

命令:

find?.?-newer?log2012.log?-print

輸出:

[root@localhost?test]#?find?-newer?log2012.log

.

./log2015.log

./log2017.log

./log2016.log

./test3

[root@localhost?test]#

?

9.使用type選項:

實例1:在/etc目錄下查找所有的目錄??

命令:

find?/etc?-type?d?-print??

實例2:在當前目錄下查找除目錄以外的所有類型的文件??

命令:

find?.?!?-type?d?-print??

實例3:在/etc目錄下查找所有的符號鏈接文件

命令:

find?/etc?-type?l?-print

?

10.使用size選項:

可以按照文件長度來查找文件,這里所指的文件長度既可以用塊(block)來計量,也可以用字節來計量。以字節計量文件長度的表達形式為N?c;以塊計量文件長度只用數字表示即可。??

在按照文件長度查找文件時,一般使用這種以字節表示的文件長度,在查看文件系統的大小,因為這時使用塊來計量更容易轉換。??

實例1:在當前目錄下查找文件長度大于1?M字節的文件??

命令:

find?.?-size?+1000000c?-print

實例2:在/home/apache目錄下查找文件長度恰好為100字節的文件:??

命令:

find?/home/apache?-size?100c?-print??

實例3:在當前目錄下查找長度超過10塊的文件(一塊等于512字節)?

命令:

find?.?-size?+10?-print

?

11.使用depth選項:

在使用find命令時,可能希望先匹配所有的文件,再在子目錄中查找。使用depth選項就可以使find命令這樣做。這樣做的一個原因就是,當在使用find命令向磁帶上備份文件系統時,希望首先備份所有的文件,其次再備份子目錄中的文件。??

實例1:find命令從文件系統的根目錄開始,查找一個名為CON.FILE的文件。???

命令:

find?/?-name?"CON.FILE"?-depth?-print

說明:

它將首先匹配所有的文件然后再進入子目錄中查找

12.使用mount選項:?

? 在當前的文件系統中查找文件(不進入其他文件系統),可以使用find命令的mount選項。

實例1:從當前目錄開始查找位于本文件系統中文件名以XC結尾的文件??

命令:

find?.?-name?"*.XC"?-mount?-print?

轉載于:https://www.cnblogs.com/leaf-bajiao/p/6743422.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259127.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259127.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259127.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(WPF) DataGrid之綁定

通過ObservableCollection 綁定到 DataGrid. 1. 前臺Xaml. <DataGrid x:Name"dgMeasurements"HorizontalAlignment"Left"Margin"10,69,0,10"ItemsSource"{Binding}"AutoGenerateColumns"False"Width"370">…

程序=數據結構+算法

這句名言&#xff0c;我現在品來很有感覺&#xff0c;看看uc/os-II里面那些就緒表、查找最高優先級任務等等&#xff0c;算法設計的非常巧妙&#xff0c;整個OS都是圍繞著OS_TCB來運轉的&#xff0c;任務需要通信&#xff0c;那就在建立個OS_EVENT&#xff0c;通過.*OSTCBEvent…

去哪筆試兩題

1&#xff0c;a是一個有序數組&#xff0c;但經過向右移動數位&#xff0c;現在預在a中查找元素key的位置&#xff0c;如不存在&#xff0c;返回0。例如a[5,6.7.8,1,2,3,4]. 實現&#xff1a; 1 #quna12 def findPos(a,key):3 mina[0];4 for i in range(len(a)):5 …

MySQL5.6主從復制搭建基于日志(binlog)

什么是MySQL主從復制 簡單來說&#xff0c;就是保證主SQL&#xff08;Master&#xff09;和從SQL&#xff08;Slave&#xff09;的數據是一致性的&#xff0c;向Master插入數據后&#xff0c;Slave會自動從Master把修改的數據同步過來&#xff08;有一定的延遲&#xff09;&…

opengl 如何加陰影_動漫嘴唇厚涂如何繪制?厚涂嘴唇正確畫法

動漫嘴唇厚涂如何繪制&#xff1f;厚涂嘴唇正確畫法&#xff01;嘴巴怎么畫&#xff1f;畫嘴巴真的很考驗一個畫師功力&#xff0c;好看的嘴巴生動而豐滿&#xff0c;可以給整幅畫作添上亮點&#xff0c;而畫的不好的嘴巴呢&#xff0c;就容易把畫面整體的風格打破。那么零基礎…

位運算

我們復習一下位運算&#xff0c;這里介紹一下(& ,|, ^)的用途。 按位與 ------------& 規則&#xff1a; 0&00 0&10 1&0 0 1&11 &#xff08; 兩位為1&#xff0c;才是1&#xff09;作用&#xff1a; 清零與保位。通常用來將特定的位清零&…

詳解JMeter函數和變量

詳解JMeter函數和變量&#xff08;1&#xff09; JMeter函數可以被認為是某種特殊的變量&#xff0c;它們可以被采樣器或者其他測試元件所引用。函數調用的語法如下&#xff1a; ${__functionName(var1,var2,var3)} 其中&#xff0c;__functionName匹配被調用的函數名稱。用圓括…

信號反射

突然想起來前幾天調試CAN通訊的時候出現的BUG&#xff0c;那就是傳說中的“信號反射”&#xff0c;也有稱“振鈴”的。錯誤剛出現的時候沒有意識過來&#xff0c;還說怎么出現重復出現這么多條消息呢&#xff1f;光在書本上看到過這個概念&#xff0c;沒有“實物”與之對應起來…

hdu 5199 map或二分或哈希

題目描述&#xff1a;給出n棵樹的高度&#xff0c;每棵樹上都站著一只鳥&#xff0c;槍手Jack站在最左邊那棵樹的左邊對鳥進行射擊&#xff0c;當Jack在高度為H的地方向右發射一顆子彈的時候&#xff0c;高度為H的樹上的鳥兒就會掉落&#xff08;注&#xff1a;其他樹上的鳥兒不…

數字電路實驗怎么接線視頻講解_家庭影院中音箱、功放、投影機、4K播放機不知道怎么連接?手把手教你...

家庭影院中音箱、功放、投影機、4K播放機不知道怎么連接&#xff1f;手把手教你有不少用戶收到從家庭影院器材之后&#xff0c;表示完全不會連接。翻看說明書也覺得頭大&#xff0c;知識太多&#xff0c;然而卻很難找到要點。今天主要跟大家講講如何連接音箱、功放、投影機和影…

.NET開發過程中的全文索引使用技巧之Solr

前言&#xff1a;相信許多人都聽說過.net開發過程中基于Lucene.net實現的全文索引&#xff0c;而Solr是一個高性能&#xff0c;基于Lucene的全文搜索服務器。同時對其進行了擴展&#xff0c;提供了比Lucene更為豐富的查詢語言&#xff0c;同時實現了可配置、可擴展并對查詢性能…

關于字符的讀入與輸出

在筆試中&#xff0c;經常見到字符的讀入與輸出的題目。逆序打印輸入時最常見、最基本的考題&#xff0c;復雜點的就是統計單詞、逆序打印單詞之類的。難點是如何判斷輸入的結束&#xff0c;如果用getchar函數&#xff0c;其輸入結束符為EOF&#xff08;其打印值為-1&#xff0…

修正discuz發帖首次換行無效的問題

找遍了百度和google都沒有解決方案&#xff0c;連discuz官方都沒有出來解決&#xff0c;至今其官網仍有這個問題。 那就自己動手解決吧&#xff0c;順手打個補丁。雖然走了小路&#xff0c;但是能解決問題。 解決方案&#xff1a;修改static/js/bbcode.js 找到 html2bbcode()方…

auto.js停止所有線程_Java線程與并發編程實踐:深入理解volatile和final變量

同步有兩種屬性&#xff1a;互斥性和可見性。synchronized關鍵字與兩者都有關系。Java同時也提供了一種更弱的、僅僅包含可見性的同步形式&#xff0c;并且只以volatile關鍵字關聯。假設你自己設計了一個停止線程的機制(因為無法使用Thread不安全的stop()方法))。清單1中Thread…

項目實例改編:利用structs2的action 實時顯示圖片、pdf和其他內容的框架抽取。(轉)...

轉自&#xff1a;http://www.verydemo.com/demo_c167_i1382.html 針對&#xff1a;預覽文件&#xff08;圖片&#xff0c;PDF&#xff09;文件來源為action中的inputStream 重點&#xff1a; structs2的action的配置 action的寫法和結果類型 resulttype的寫法 網頁上實…

零碎的小知識點 ----------C# ToString()函數注意事項

C#中存在著大量的字符串操作&#xff0c;有專門的string類&#xff0c;各種各種的方法&#xff0c;其中使用最為頻繁的方法為ToString()&#xff0c;用起來很是順手&#xff0c;但是這里存在一個很大的問題&#xff0c;空字符是不能用ToString方法轉換的&#xff0c;不然就會報…

ios越獄系統UIGestureRecognizer事件截獲問題

越獄的機器給self.view設置一個UITapGestureRecognizer,這貨就把所有的點擊事件全截獲了,比如某個按鈕,點擊就沒效果.普通系統是沒有問題的. 因此要給UIGestureRecognizer設置delegate并且在其中對touch的view進行分別處理 比如要讓按鈕功能正常使用: 1 #pragma mark - UIGestu…

開始Go開發之旅-Golang架構師之路系列實戰

2019獨角獸企業重金招聘Python工程師標準>>> 作者: gomaster.me(馮琪超) 系列:Golang架構師之路 巧婦難做無米之炊&#xff0c;golang sdk就是gopher的大米 下載golang 點擊 官網下載golang sdk 根據不同系統&#xff0c;官網下載鏈接會選擇相應的平臺進行鏈接跳轉&…

delete與delete[]的區別

一直對C中的delete和delete[]的區別不甚了解&#xff0c;今天遇到了&#xff0c;上網查了一下&#xff0c;得出了結論。做個備份&#xff0c;以免丟失。 C告訴我們在回收用 new 分配的單個對象的內存空間的時候用 delete&#xff0c;回收用 new[] 分配的一組對象的內存空間的時…

event對應的各種坐標

IE8不支持的PageXY 相對于整個頁面鼠標的位置 包括溢出的部分 event.pageX; event.pageY; 所有瀏覽器支持的&#xff1a; 相對于當前瀏覽器窗口可視區域的坐標event.clientX;event.clientY; 相對于當前屏幕&#xff08;和瀏覽器窗口大小無關&#xff09;的坐標event.screenX;…