Linux系統下的查找命令都有哪些
今天小保安要跟大家分享的文章是關于Linux系統下的查找命令都有哪些?我們經常需要在系統中查找一個文件或者命令,那么在Linux系統中如何快速定位和精確查找它呢?下面總結了五個常用的基礎命令,分別是which、whereis、type、locate、find。 Linux入門新手和正在Linux學習的小伙伴快來看一看吧,希望能夠對大家有所幫助!
一、which
which命令用于查找并顯示給定命令的絕對路徑,環境變量PATH中保存了查找命令時需要遍歷的目錄。which指令會在環境變量$PATH設置的目錄里查找符合條件的文件。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
語法
which [options] [arguments]
選項
-n<文件名長度>:制定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名;
-p<文件名長度>:與-n參數相同,但此處的<文件名長度>包含了文件的路徑;
-w:指定輸出時欄位的寬度;
-V:顯示版本信息。
參數
指令名:指令名列表。
二、whereis
whereis命令首先會去掉filename中的前綴空格和以.開頭的任何字符,然后再在數據庫(var/lib/slocate/slocate.db)中查找與上述處理后的filename相匹配的二進制文件、源文件和幫助手冊文件,使用之前可以使用updatedb命令手動更新數據庫。
語法
whereis [options] [arguments]
選項
-b:只查找二進制文件;
-B<目錄>:只在設置的目錄下查找二進制文件;
-f:不顯示文件名前的路徑名稱;
-m:只查找說明文件;
-M<目錄>:只在設置的目錄下查找說明文件;
-s:只查找原始代碼文件;
-S<目錄>只在設置的目錄下查找原始代碼文件;
-u:查找不包含指定類型的文件。
參數
指令名:要查找的二進制程序、源文件和man手冊頁的指令名。
三、type
type命令用來顯示指定命令的類型,判斷給出的指令是內部指令還是外部指令。
命令類型:
alias:別名。
keyword:關鍵字,Shell保留字。
function:函數,Shell函數。
builtin:內建命令,Shell內建命令。
file:文件,磁盤文件,外部命令。
unfound:沒有找到。
語法
type [options] [arguments]
選項
-t:輸出“file”、“alias”或者“builtin”,分別表示給定的指令為“外部指令”、“命令別名”或者“內部指令”;
-p:如果給出的指令為外部指令,則顯示其絕對路徑;
-a:在環境變量“PATH”指定的路徑中,顯示給定指令的信息,包括命令別名。
參數
指令:要顯示類型的指令。
四、locate
locates是查詢系統上預建的文建索引數據庫(/var/lib/mlocate/mlocate.db)依賴實現構建的索引。索引的構建是在系統較為空閑時自動進行(周期性任務),管理員手動更新數據庫(updatedb)索引構建過程需要遍歷整個根文件系統,極消耗資源.
工作特點:
查找速度快
模糊查找
非實時查找
搜索的是文件的全路徑,不僅僅是文件名
可能只搜索用戶具備讀取和執行權限的目錄
選項
-i 不區分大小寫搜索
-n 只列舉前N個匹配項目
參數
查找字符串:要查找的文件名中含有的字符串。
五、find
find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。
實時查找工具,通過遍歷指定的路徑完成文件查找
工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄
選項
查找條件
1.只搜索層級
-maxdepth level 最大搜索目錄深度,指定目錄為第一級
-mindepth level最大搜索目錄深度
根據文件名和inode查找:
-name "文件名稱“:支持使用glob
*,?,[],[^]
-iname "文件名稱“:不區分字母大小寫
-inum n 按inode相同的inode號的文件
isamefile name 相同inode號的文件
-links n 鏈接數為n的文件
-regex "PATTERN": 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
更具屬主屬組查找:
-user USERNAME:查找屬主為指定用戶(UID)的文件
-group GREPNAME:查找屬組為指定組(GID)的文件
-uid UserID:查找屬主為指定的UID號的文件
-gid GroupID: 查找屬主為指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
2.根據文件類型查找:
-type TYPE
f:普通文件
d:目錄文件
l:符號鏈接文件
s:套接字文件
b:塊文件
c:字符設備文件
p:管道文件
組合條件:
與:-a
或:-o
非:-not,!
德.摩根定律
(非A) 或 (非B)= 非(A且B)
(非A) 且 (非B)= 非(A或B)
3.根據文件大小來查找:
-size [+|-] #UNIT
#UNIT:(#-1,#)
-#UNIT:(0,#-1)
+#UNIT:(#,∞)
根據時間戳:
以“天”為單位:
-atime[+|-]#
#:[#,#+1]
+#:[#+1,,∞]
-#:[0,#]
-ctime
-mtime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm[/|-]MODE
MODE:精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+從centos7開始淘汰
-MODE:每一類對象都必須同時擁有指定權限,與關系
O 表示不關注
處理動作
1. -print:默認的處理動作,顯示至屏幕
2. -ls:類似對于查到的文件執行"ls -l"命令
3. -delete:刪除查找到的文件
4. -fls file:查找到的所文件的長格式信息保存至指定文件中
5. -ok COMAND{} \;對查找到的每個文件執行由COMMAND制定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認
6. -exec COMMAND {} \;對查找到的每個文件執行由COMMAND指定的命令
7. {}:用于應用查找到的文件名稱自身
8. find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
參數替換xargs
1. 由于很多命令不支持管道|來傳遞參數,而正常工作中有這個必要,所以就有了xargs命令
2. xargs用于產生某個命令參數,xargs可以讀入stdin的數據,并且以空格符或回車符將stdin的數據分隔成為arguments
3. 注意:文件名或者是其他異議的名詞內含有空格符的情況
4. 有些命令不能接受過多參數,命令執行可能會失敗,xargs可以解決
find和xargs格式:find | xargs COMMAND
參數
起始目錄:查找文件的起始目錄。
以上就是小編今天為大家分享的關于Linux系統下的查找命令都有哪些的文章,希望本篇文章能夠對正在從事Linux相關工作和學習的小伙伴們有所幫助。想要了解更多Linux相關知識記得關注馬哥教育官網。最后祝愿小伙伴們工作順利!
聲明:文章來源于網絡,侵刪!