注意:grep、egrep、fgrep指令都文本查找,是查找檔案裡的内容。
檔案查找用locate指令、find指令。
1、locate指令
是全系統内進行查找,是根據資料庫進行的。這個資料庫是系統每天晚上自動建立的。
特點:
非實時,模糊比對,查找是根據全系統檔案資料庫進行,速度快。
目前對檔案的操作,不會在資料庫中,是以有些檔案用locate搜尋不到,但是可用指令手動更新資料庫後,再用locate指令查找即可實作實時查找。
updatedb指令:手動更新資料庫。
2、find指令:
實時查找,精确,支援衆多查找标準,通過周遊制定中的目錄的所有檔案完成查找,速度較慢。
find指令格式:
find 查找路徑 查找标準 查找到以後的處理動作
(1)查找路徑:可省了,預設為目前目錄;
(2)查找标準:預設為指定路徑下的所有檔案;
(3)處理動作:預設為顯示;
比對标準:
1、 -name ‘FILENAME':對檔案名精确比對,預設嚴格區分大小寫;
支援檔案名通配;
-iname FILENAME':檔案名比對時不區分大小寫;
2、 -regex PATTERN:基于正規表達式進行檔案名比對,要同--regextype TYPE指定正則式類型;
3、 -user USERNAEM:根據屬主查找檔案;
-group GROUPNAME:根據屬組查找檔案;
4、 -uid UID:根據uid查找檔案,删除使用者後可使用;
-gid GID:根據gid查找檔案;
5、 -nouser:查找沒有屬主的檔案;
-nogroup:查找沒有屬組的檔案;
6、 -type CHART(指定檔案類型):
f:普通檔案;
d:目錄檔案;
c:字元裝置檔案;
b:塊裝置檔案;
l:符号(軟)連結檔案;
p:管道裝置;
s:套接字檔案;
7、 -size [+|-]#unite(指定檔案大小,機關預設為位元組)
#unit:精确大小#unit,機關可為K,M,G;
+#unit:大于#unit;
-#unit:小于#unit;
8、組合條件查找:預設為與邏輯;
-a:與
-o:或
-not:非,例如:-not -type d為非目錄類型檔案;
注意摩根定律:
-not A -a -not B = -not(A -o B)
-not A -o -not B = -not(A -a B)
9、根據檔案時間戳查找:
以天為機關:
-atime [+|-]#:通路時間;
-mtime [+|-]#:修改時間;
-ctime [+|-]#:改變時間;
#:此刻時間到之前的24小時的一天之内;
+#:#天之前;
-#:#天之内;
以分鐘為機關
-amin [+|-]#:通路時間;
-mmin [+|-]#:修改時間;
-cmin [+|-]#:改變時間;
10、 根據權限查找檔案
-perm [+|-]MODE(MODE用八進制數字表示)
MODE:表示ugo每一位權限精确比對;
/MODE:表示ugo有一位權限符号就比對(或關系);
-MODE:表示ugo的權限位隻有完全包含就比對(與關系);
(3)執行動作:預設為-print:顯示;
-ls:類似ls -l的形式顯示每一個檔案的詳細資訊;
-ok COMMAND {} \;互動執行指令,大括号為引用比對到的檔案;
-exec COMMAND {} \;:不互動執行指令;
例如:注意文法格式 {} \;
find ./ -perm -006 -exec chomod o-w {} \;
解釋:找權限完全包含other使用者擁有讀、寫權限的檔案後,other設為沒有寫權限;
find ./ -type d -ok chmod +x {} \;
解釋:找類型為目錄的檔案後,把檔案的屬主、屬組設為擁有執行權限,執行指令前讓使用者确認;
find ./ -perm -020 -exec mv {} {}.new \;
解釋:找檔案權限完全包含為屬組有寫權限的檔案後,重命名為原名後加.new;
本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1751094,如需轉載請自行聯系原作者