文件查找命令使用
為了高效提升效率,文件系統中的文件眾多,Linux系統一切皆文件的思想,不免有時候忘記某個文件位於哪個文件夾,或具體叫什麽名字等,使用ls/cd 等工具一個一個查找比較低效無用,對於內容查找可以使用‘三劍客‘。
- locate使用
依賴事先存在的索引庫,數據並非實時更新,需要手動update或者cron任務實現周期更新;
特點:
查找速度快、模糊查找、非實時查找
用法:
locate [options] pattern..
-b : 只匹配路徑的基名
-c : 統計出共有多少個符合的
-r : 正則表達式匹配 -
find使用
實時查找,通過遍歷整個跟文件系統查找,比較消耗資源
用法:
find [options] [查找起始路徑] [查找條件] [處理動作]
查找路徑:默認當前路徑,指定精確的範圍能夠提高效率
查找條件:指定查找的標準,文件名、大小、文件類型、從屬關系、時間、權限
處理動作:默認為標準輸出至屏幕,可以對查找符合條件的文件做處理,如刪除、執行某命令。
查找條件:[選項[測試條件]]-
測試條件:布爾型結果true 、false
組合測試:
-a: 與關系,如何多個條件不加測試,默認為與關系
-o: 或關系
-not | !: 非關系 -
根據文件名查找
-name “pattern”
-iname "pattern" :不區分大小寫
支持glob通配符:*、?、[]、[^]...
如查找/usr/share/中.jpg結尾文件:
-
根據從屬關系查找
-user username:指定用戶文件的屬主查找
-group groupname:指定文件的屬組查找
-uid UID :指定文件的uid查找
-gid GID :指定文件的gid查找
-nouser :查找沒有屬主的文件
-nogroup :查找沒有屬組的文件 - 根據文件類型查找
-type TYPE
f: 普通文件
d: 目錄文件
l:符號鏈接文件
b:塊設備 文件
c:字符設備文件
p:管道文件 -
根據文件大小查找
-size [+|-] #單位 :單位常用K,M,G
#3K:表示精確大小查找,(#-1,#]數學範圍表示
+3K:表示大於3K的文件,(#,0-0)
-3K:表示小於3K的文件,(0,#) -
根據文件時間戳查找,即stat的三個時間戳
以天為單位:類型 [+|-] #
-atime :訪問時間
-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
如:找到/usr/share/下圖片並復制到/tmp下
-
- 以上只是查找文件,如何根據內容查找:如查找grub.d/下中文件包含有GRUB2_PASSWORD
-r:表示遞歸查找
-n:顯示行號
詳細用法查看grep.
文件查找命令使用