Linux系統文件查找
使用linux系統難免會忘記文件所在的位置,可以使用以下命令對系統中的文件進行搜索。
locate命令:
locate命令其實是“find -name”的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。
命令用法: locate [OPTION]... PATTERN... 常用選項: -b, --basename 至匹配路徑中的基名 -c, --count 統計出共有多少個符合條件的文件 -d, --database DBPATH 用 DBPATH 替代默認的數據庫(/var/lib/mlocate/mlocate.db) -e, --existing 只顯示當前存在的文件條目 -L, --follow 當文件存在時跟隨蔓延的符號鏈接 (默認) -h, --help 顯示本幫助 -i, --ignore-case 匹配模式時忽略大小寫區別 -l, --limit, -n LIMIT 限制為 LIMIT項目的輸出 (或 計數) -m, --mmap 忽略向后兼容性 -P, --nofollow, -H 當檢查文件時不跟隨蔓延的符號鏈接 -0, --null 輸出時以 NUL 分隔項目 -S, --statistics 不搜索項目,顯示有關每個已用數據庫的統計信息 -q, --quiet 不報告關于讀取數據庫的錯誤消息 -r, --regexp REGEXP 搜索基本正則表達式 REGEXP 來代替模式 --regex 模式是擴展正則表達式 -s, --stdio 忽略向后兼容性 -V, --version 顯示版本信息 -w, --wholename 匹配完整路徑名 (默認) 注:索引構建過程需要遍歷整個根文件系統,極消耗資源
find命令:
Linux下find命令通過遍歷指定起始路徑下文件系統層級結構完成文件查找,查找速度略慢,但查找結果精確。
命令用法: find [OPTIONS] [查找起始路徑] [查找條件] [處理動作] 查找起始路徑:指定具體搜索目標起始路徑,默認為當前目錄 查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關系、權限等標準進行,默認為找出指定路徑下的所有文件; 處理動作:多符合查找條件的文件作出的操作,例如刪除等操作,默認為輸出至標準輸出; 查找條件: 表達式:選項和測試 測試:結果通常為布爾型(“true”“false”) 根據文件名查找: -name “pattern” -iname “pattern”:不區分大小寫 支持glob風格的通配符 -regex pattern:基于正則表達式模式查找文件,匹配是整個路徑,而非其名 -user USERNAME:查找屬主指定用戶的所有文件 -group GRPNAME:查找屬組指定組的所有文件 -uid UID:查找屬主指定的UID的所有文件 -gid GIU:查找屬組指定的GID的所有文件 -nouser:查找沒有屬主的文件 -nogroup:查找沒有屬組的文件 根據文件的類型查找: -type TYPE: f:普通文件 d:目錄文件 l:符號鏈接文件 b:塊設備文件 c:字符設備文件 p:管道文件 s:套接字文件 組合測試: 與:-a,默認組合邏輯 或:-o, 非:-not,! 根據文件的大小查找: -size [+|-] #UNIT 常用單位:K,M,G 根據時間戳查找: 以“天”為單位: -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 {} \; :對查找到的每個文件執行由COMMADN表示的命令 注:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,并一次傳遞給后面的命令,但是有些命令不能接受過長的參數,此時命令執行會失敗,另一種方式可規避此問題: find | xargs COMMAND
whereis命令:
whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬于原始代碼,二進制文件,或是幫助文件。
命令用法: whereis [-bmsu] [BMS 目錄名 -f ] 文件名 常用選項: -b 定位可執行文件。 -m 定位幫助文件。 -s 定位源代碼文件。 -u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。 -B 指定搜索可執行文件的路徑。 -M 指定搜索幫助文件的路徑。 -S 指定搜索源代碼文件的路徑。
type命令:
type 命令被用于判斷另外一個命令是否是內置命令
命令用法: type [選項] [參數] 常用選項: -a 顯示一個名字的所有可能 -t 判斷一個名字當前是否是alias、keyword、function、builtin、file -p 查看一個外部命令的執行路徑 -P 查看內部命令路徑 alias 別名 keyword 關鍵字,Shell保留字 function 函數,Shell函數 builtin 內建命令,Shell內建命令 file 文件,磁盤文件,外部命令 unfound 沒有找到
which命令:
which命令的作用是在PATH變量指定的路徑中搜索某個系統命令的位置并且返回第一個搜索結果。也就是說使用which命令就可以看到某個系統命令是否存在以及執行的到底是哪一個位置的命令。
命令用法: which [options] [--] programname [...] 常用選項: -a 查找全部內容,而非第一個文件 -n <文件名長度> 指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。 -p <文件名長度> 與-n參數相同,但此處的<文件名長度>包括了文件的路徑。 -w 指定輸出時欄位的寬度。 -V 顯示版本信息。
原創文章,作者:641348038@qq.com,如若轉載,請注明出處:http://www.www58058.com/61164
知識點總結的非常不錯,如果再配一些示例會更好,這樣既能驗證你的掌握程度,又能加深印象。