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