whereis
用來檢視與特定指令相關的檔案:二進制(可執行)檔案,源檔案,文檔檔案
whereis不搜尋整個檔案系統,隻檢視那些此類檔案極可能存在的目錄。
如:/bin,/sbin,/etc,/usr/share/man
whereis command
command是希望查找的指令名稱
輸出是程式所處的可執行檔案的路徑名,源檔案的路徑位置,以及說明書頁的路徑位置。
選項:
-b 隻顯示可執行檔案的路徑名
-m 隻顯示聯機手冊中的檔案
-s 隻顯示源檔案
locate
搜尋一個特殊的資料庫(該資料庫中包含所有可公共通路的檔案的路徑名),查找所有包含特定模式的路徑名。
該資料庫自動維護,并定期更新。
locate pattern
pattern是在路徑名中查找的模式。
選項:
-r 使用正規表達式
-c 顯示比對檔案的總數,而不顯示實際的檔案名
-i 忽略大小寫
-b 隻比對路徑名的最後一部分,即檔案名或基名。(最後一個/後的部分)
find
通過搜尋目錄樹查找檔案
搜尋一個或多個目錄樹,根據指定的測試條件,查找滿足特定标準的檔案。一旦搜尋完成,find将對查找到的檔案執行某種動作。
動作可以是檔案名的顯示,删除檔案,顯示檔案資訊,将檔案傳遞給另一條指令等。
為了運作find,需要指定3件事:目錄路徑,測試,動作。
路徑:檢視是以的路徑,檢查這些路徑所表示的整個目錄樹。
測試:對遇到的每個檔案,find應用指定的測試條件。建立一個滿足測試标準的所有檔案的清單。
動作:一旦搜尋完成,find就對清單中的每個檔案執行指定的操作。
測試
檔案名 | |
-name pattern | 包含pattern的檔案名 |
-iname pattern | 包含pattern的檔案名(不區分大小寫) |
檔案特征 | |
-type [df] | 檔案類型:d=目錄,f=普通檔案 |
-perm mode | 設定為mode的檔案權限 |
-user userid | 屬主為userid |
-groups groupid | 組為groupid |
-size [-+]n[cbkMG] | n[字元(位元組),塊,千位元組,兆位元組,吉位元組] |
-empty | 空檔案(大小=0) |
通路時間,修改時間 | |
-amin [-+]n | n分鐘之前通路 |
-anewer file | fiel檔案之後通路 |
-atime [-+]n | n天之前通路 |
-cmin [-+]n | n分鐘之前狀态改變 |
-cnewer file | file檔案之後狀态改變 |
-ctime [-+]n | n天之前狀态改變 |
-mmin [-+]n | n分鐘之前修改 |
-mtime [-+]n | n天之前修改 |
-newer file | file檔案之後修改 |
ps:
+和-分别代表大于或小于
使用-name 時若用通配符,則要用引号引起。
以位元組作為機關測試檔案大小時,find假定讨論的是檔案的内容,而不是使用的磁盤空間。
當以塊,千位元組,兆位元組,吉位元組為機關測試檔案大小時,find假定讨論的是磁盤空間。
測試求反
可以通過 ! 對測試求反。
! 的兩側必須各留一個空格,并且必須引用 ! 。(\! 或 ‘!')
處理檔案權限錯誤消息
将标準錯誤重定向到/dev/null
2> /dev/null
動作
将路徑名寫入到标準輸出 | |
-fprint file | 同-print;将輸出寫入到file |
-ls | 顯示長目錄清單 |
-fls file | 同-ls;将輸出寫入到file |
-delete | 删除檔案 |
-exec command{}\; | 執行command,{}訓示比對的檔案名 |
-ok command{}\; | 同-exec;但是在運作command之前先确認 |
ps:
如果不指定動作,-print是預設動作。
-exec就像在指令行上鍵入指令一樣,在指令中,{}用來指代find找到的檔案清單。為了表明指令的末尾,必須以;結尾。
-exec為每個檔案生成一條單獨的指令。
處理找到的指令
xargs可以運作任何使用參數指定的指令,參數通過标準輸入傳遞給該程式。
xargs [-prt] [istring] [comand[argument]]
command是希望運作的指令,string是占位符,argument是從标準輸入讀取的參數。
-i選項允許使用{}作為占位符(預設),占位符将在指令運作之前被參數取代。
-p 在指令生成時顯示每條指令,在運作指令前請求許可
-t 在運作過程中顯示每條指令,不可與其他選項一起使用
-r 如果沒有輸入參數,則不運作指令