2021-05-12 14:32:11
Linux目錄和檔案查詢命令
摘要:本文主要學習了在Linux系統中是如何查詢目錄和檔案的。
which命令
which命令是根據PATH環境變數設定的路徑,去搜尋執行檔案。
基本語法
[root@localhost ~]# which [選項] 命令名稱
選項說明
-a:列出所有的可以找到的同名執行檔案。
使用舉例
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]#
type命令
type命令用來顯示指定命令的型別:
1)alias:別名。
2)keyword:關鍵字,Shell保留字。
3)function:函數,Shell函數。
4)builtin:內建(內嵌)命令,Shell內建命令。
5)file:檔案,磁碟檔案,外部命令。
6)unfound:未找到。
基本語法
[root@localhost ~]# type [選項] 命令名稱
選項說明
-t:顯示“file”、“alias”或者“builtin”,分別表示給定的指令為“外部指令”、“別名”或者“內嵌指令”。
-p:如果給出的指令為外部指令,則顯示其絕對路徑。
-a:在環境變數“PATH”指定的路徑中,顯示給定指令的資訊,包括命令別名。
使用舉例
[root@localhost ~]# type ls
ls 是 `ls --color=auto' 的別名
[root@localhost ~]# type -t ls
alias
[root@localhost ~]# type -p ls
[root@localhost ~]# type -a ls
ls 是 `ls --color=auto' 的別名
ls 是 /usr/bin/ls
[root@localhost ~]# type cd
cd 是 shell 內嵌
[root@localhost ~]# type -t cd
builtin
[root@localhost ~]# type -p cd
[root@localhost ~]# type -a cd
cd 是 shell 內嵌
cd 是 /usr/bin/cd
[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# type -t useradd
file
[root@localhost ~]# type -p useradd
/usr/sbin/useradd
[root@localhost ~]# type -a useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]#
whereis命令
whereis命令用於在特定目錄中查詢符合條件的檔案。
whereis命令用來定位指令的二進位制程式、原始碼檔案和man手冊頁等相關檔案的路徑。whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。
基本語法
whereis [選項] 檔案或目錄
選項說明
-b:只搜尋二進位制檔案。
-m:只搜尋man手冊。
-s:只搜尋原始碼。
-u:搜尋不是b、m、s指定目錄的其他特殊目錄。
-l:列出會去查詢的有效查詢目錄。
使用舉例
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@localhost ~]#
find命令
find命令可以在目錄結構中搜尋檔案,並執行指定的操作。
基本語法
[root@localhost ~]# find 目錄 [選項] 查詢後的動作
選項說明
-amin n:查詢n分鐘以前被存取過的所有檔案。
-atime n:查詢n天以前被存取過的所有檔案。
-cmin n:查詢n分鐘以前檔案狀態被修改過的所有檔案。
-ctime n:查詢n天以前檔案狀態被修改過的所有檔案。
-mmin n:查詢n分鐘以前檔案內容被修改過的所有檔案。
-mtime n:查詢n天以前檔案內容被修改過的所有檔案。
-newer file:file為一個存在的檔案,列出比file還要新的檔案。
-uid n:n為數位,這個數位是使用者的帳號ID,亦即UID。
-gid n:n為數位,這個數位是群組名稱的ID。
-user name:查詢name為使用者名稱的檔案。
-group name:查詢name為群組名的檔案。
-nouser:查詢沒有所有人的檔案。
-nogroup:查詢沒有所屬組的檔案。
-maxdepth n:n為數位,查詢深度距離當前目錄最多n個子目錄深度 。
-mindepth n:n為數位,查詢深度距離當前目錄至少n個子目錄深度。
-name filename:查詢檔名為filename的檔案,區分大小寫。*表示通配任意個字元,?表示通配單個字元。
-iname filename:查詢檔名為filename的檔案,不區分大小寫。*表示通配任意個字元,?表示通配單個字元。
-type TYPE:查詢檔案的型別為TYPE的檔案。型別主要有:一般檔案(f),裝置檔案(b、c),目錄(d),軟連結(l),socket(s),及FIFO(p)等屬性。
-empty:查詢路徑下為空的檔案或資料夾。
-size [+-]SIZE:查詢比SIZE還要大(+)或小(-)的檔案。SIZE的規格有:k、M、G。
-perm [-/]mode:查詢檔案許可權為mode或大於mode(-)或包含任一mode(/)的檔案,這個mode為類似chmod的屬性值。
-a:兩個條件必須同時為真。
-o:兩個條件只要任意一個為真。
-not:對條件進行取反。
執行動作
1 -exec command {} ;:command為其他命令,-exec後面可再接額外的命令來處理查詢到的結果。
2 -ok command {} ;:-ok相對於-exec而言更安全一點,會讓使用者確定所要執行的操作。
3 -print:將結果列印到螢幕上。
使用舉例
[root@localhost ~]# find . -name test
./test
[root@localhost ~]#
locate命令
locate命令用於查詢符合條件的文件,該命令會去儲存文件和目錄名稱的資料庫內,查詢合乎範本樣式條件的文件或目錄,比find快很多。因為該命令是從資料庫內查詢,並不是在磁碟上直接查詢。
locate的速度比find快,它並不是真的查詢,而是查資料庫,一般檔案資料庫在/var/lib/slocate/slocate.db中,所以locate的查詢並不是實時的,而是以資料庫的更新為準,一般是系統會每天更新一次,也可以手工升級資料庫。
安裝命令
[root@localhost ~]# yum install -y mlocate
更新命令
[root@localhost ~]# updatedb
基本語法
[root@localhost ~]# locate [選項] 關鍵字
選項說明
-i:忽略大小寫的差異。
-c:不輸出檔名,僅計算找到的檔案數量。
-l n:n為數位,表示僅輸出n行。
-S:輸出locate所使用的檔案或目錄的相關屬性。
-r:使用正規表示式進行搜尋。
使用舉例
[root@localhost ~]# locate hello.zip
/home/hello.zip
[root@localhost ~]#
相關文章