find與邏輯關係運算

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優先級提前而導致了結果的不同,從而證實了“與”的優先級高於“或”。

結論:find中邏輯運算優先級爲:()>非>與>或

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章