1. find命令的簡單介紹
find命令是linux系統中的一項搜尋命令,其有着強大的功能,不經支持傳統正則表達式,而且還支持通配符的使用。
[root@zhaoyang ~]# find [PATH] [option] [action]
以上是該命令的格式要求。
-uid n :n 爲數字,這個數字是使用者的帳號 ID,亦即 UID 。
-gid n :n 爲數字,這個數字是羣組名稱的 ID,亦即 GID。
-user name :name 爲使用者帳號名稱。
-group name:name 爲羣組名稱。
-nouser :尋找文件的擁有者不存在的文件。
-nogroup :尋找文件的擁有羣組不存在的文件!
當然,以上只是find命令中使用較爲簡單明瞭的選項,大家可以通過簡單的例子驗證一下。
介紹完基本的選項,其實find命令還有較多複雜的選項,例如關於以文件大小進行搜索(-size)和以修改時間進行搜索(主要爲-mtime)的選項,其設置的內容確實需要進一步的學習才能正確給出策略,也請各位進一步查詢幫助文檔學習,我們這次要進行研究的重點是其邏輯關係運算方面的運用。
2. find中邏輯關係的簡單介紹
邏輯關係有三種
- 與 -a
- 或 -o
- 非 -not,!
下面先給出各項的使用語法
find -user zy -a -group zy
查找用戶名爲zy並且所屬組爲zy的文件
find -user zy -o -user zhaoyang
查找用戶名爲zy或zhaoyang的文件
find -not user
查找用戶名不是user的文件
3. 邏輯關係優先級別
上面都是一些單一的邏輯關係,已經給出其基本的用法,但有些時候,簡單的邏輯關係很難篩選出我們所需要的結果,我們往往需要將邏輯運算符相結合,構成較複雜的運算。
說到複雜的組合運算,那麼一定要注重運算的過程,也就是運算的優先級,只有瞭解了正確的優先級,才能給出正確的策略解決問題。
[root@localhost ~]# cd /app
[root@localhost app]# touch wenben1
[root@localhost app]# touch wenben2
[root@localhost app]# touch wenben3
如上我們在/app文件夾中創建出wenben1、wenben2、wenben3三個文件
[root@localhost app]#find -not -name wenben1 -a -name wenben2
./wenben2
[root@localhost app]# find -not \( -name wenben1 -a -name wenben2 \)
/app/.shiyan.swp
/app/.yuan.swp
/app/.wenben.swp
/app/.wenben.swo
/app/.shiyan.swo
/app/.shiyan.swn
/app/wenben1
/app/wenben2
/app/wenben3
我們都知道,()內的運算式優先級是最高到,但顯然,上邊兩式得到的結果並不相同,在通過國際分析式子一,發現其先運算了-not,然後才運算了-a運算。
[root@localhost app]# find -name wenben1 -a -name wenben2 -o -name wenben3
./wenben3
[root@localhost app]# find -name wenben1 -a \( -name wenben2 -o -name wenben3 \)
觀察上列代碼,得知兩代碼因()將-o優先級提前而導致了結果的不同,從而證實了“與”的優先級高於“或”。