Linux系統上的文件查找工具

Linux系統上的文件查找工具


在文件系統上查找符合條件的文件:


實現工具:locate,find


locate:

依賴於事先構建好的索引庫;

系統自動實現(週期性任務);

手動更新數據庫(updatedb);


工作特性:

查找速度快;

模糊查找;

非實時查找;


 locate [OPTION]... PATTERN...

  -b:只匹配路徑中的基名

  -c:統計出共有多少個符合條件的文件;

  -r:BRE支持基本正則表達式


 注意:索引購將過程需要遍歷整個根文件系統,極消耗資源;


find:

實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找;


工作特性:

查找速度略慢;

精確查找;

實時查找;


用法:

find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]


查找起始路徑:指定具體搜索目標起始路徑;默認爲當前目錄;

查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關係、權限等等標準進行;默認爲找出指定路徑下的所有文件;

處理動作:對符合查找條件的文件做出的操作,例如刪除等操作;默認爲輸出至標準輸出;


查找條件:

表達式:選項和測試


測試:結果通常爲布爾型("true","false")


根據文件名查找:

-name "pattern"

-iname "pattern"

支持glob風格的通配符;

*,?,[],[^]


-regex pateern :基於正則表達式模式查找文件,匹配是整個路徑,而非基名


根據文件從屬關係查找:

-user USERNAME:查找屬主指定用戶的所有文件

-group GRPNAME:查找屬組指定組的所有文件


-uid UID:查找屬主指定的UID的所有文件;

-gid GID:查找屬組指定的GID的所有文件;


-nouser:查找沒有屬主的文件;

-nogroup:查找沒有屬組的文件;


根據文件的類型查找:

-type TYPE

f:普通文件

d:目錄文件

l:符號鏈接文件

b:塊兒設備文件

c:字符設備文件

p:管道文件

        s:套接字文件


組合測試:

與:-a,默認組合邏輯;

或:-o

非:-not,!


德摩根定律:

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)


根據文件的大小查找:

-size[+|-]#UNIT

常用單位:K,M,G


#UNIT:(#-1,#]

-#UNIT:[0,#-1]

+#UNIT:(#,∞)


根據時間戳查找:

以“天”爲單位:

-atime:訪問時間

-atime [+|-]#

#:[#,#-1)

-#:(#,0]

+#:(∞,#-1]

-mtime:修改時間

-ctime:改變時間

以“分鐘”爲單位:

-amin:訪問時間

-mmin:修改時間

-cmin:改變時間


根據權限查找:

-perm[/|-]mode

mode:精確權限匹配;

/mode:任何一類用戶(u,g,o)權限中的任何一位(r,w,x)符合條件既滿足;

9位權限之間存在"或"關係;

        -mode:每一類用戶(u,g,o)權限中的每一位(r,w,x)同時符合條件既滿足;

9位權限之間存在"與"關係;


處理動作:

        -print:輸出至標準輸出;默認的動作;

-ls:類似於對查找到的文件執行"ls -l"命令,輸出文件的詳細信息;

-delete:刪除查找到的文件

-fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;

-ok COMMAND{} \;  :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶確認;

其中{}表示前面查找到的所有內容的引用;

-exec COMMAND {} \;  

:對查找到的每個文件執行由COMMAND表示的命令;


注意:find傳遞查找到的文件路徑至後面的命令時,是先查找出所有符合條件的文件路徑,並一次性傳遞給後面的命令,但是有些命令不能接受過長的參數,此時命令執行會失敗;另一種方式可規避此問題;

find | xargs COMMAND


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