Linux目錄和文件——查詢目錄和文件的命令
摘要:本文主要學習了在Linux系統中是如何查詢目錄和文件的。
which命令
which命令是根據PATH環境變量設置的路徑,去搜索執行文件。
基本語法
1 which [選項] 命令名稱
選項說明
1 -a:列出所有的可以找到的同名執行文件。
使用舉例
1 [root@localhost ~]# which ls 2 alias ls='ls --color=auto' 3 /usr/bin/ls 4 [root@localhost ~]#
type命令
type命令用來顯示指定命令的類型:
1)alias:別名。
2)keyword:關鍵字,Shell保留字。
3)function:函數,Shell函數。
4)builtin:內建(內嵌)命令,Shell內建命令。
5)file:文件,磁盤文件,外部命令。
6)unfound:未找到。
基本語法
1 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命令
whereis命令用於在特定目錄中查找符合條件的文件。
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命令
find命令可以在目錄結構中搜索文件,並執行指定的操作。
基本語法
1 find 目錄 [選項] 查詢后的動作
選項說明
1 -amin 分鍾數:查找指定分鍾數以前被訪問過的所有文件。 2 -atime 天數:查找指定天數以前被訪問過的所有文件。 3 -cmin 分鍾數:查找指定分鍾數以前文件狀態被修改過的所有文件。 4 -ctime 天數:查找指定天數以前文件狀態被修改過的所有文件。 5 -mmin 分鍾數:查找指定分鍾數以前文件內容被修改過的所有文件。 6 -mtime 天數:查找指定天數以前文件內容被修改過的所有文件。 7 -newer 文件名:列出比指定文件還要新的文件。 8 -uid 帳號ID:查找使用者是指定賬號(即UID)的文件。 9 -gid 群組ID:查找群組是指定賬號的文件。 10 -user 用戶名:查找指定用戶名的文件。 11 -group 群組名:查找指定群組名的文件。 12 -nouser:查找沒有所有人的文件。 13 -nogroup:查找沒有所屬組的文件。 14 -maxdepth 深度:查找深度距離當前目錄最多n個子目錄深度 。 15 -mindepth 深度:查找深度距離當前目錄至少n個子目錄深度。 16 -name 文件名:查找指定文件名的文件,區分大小寫。*表示通配任意個字符,?表示通配單個字符。 17 -iname 文件名:查找指定文件名的文件,不區分大小寫。*表示通配任意個字符,?表示通配單個字符。 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 命令 {} \;:-exec后面可再接額外的命令來處理查詢到的結果。 2 -ok 命令 {} \;:-ok相對於-exec而言更安全一點,會讓用戶確定所要執行的操作。 3 -print:將結果打印到屏幕上。
使用舉例
1 [root@localhost ~]# find . -name test 2 ./test 3 [root@localhost ~]#
locate命令
locate命令用於查找符合條件的文檔,該命令會去保存文檔和目錄名稱的數據庫內,查找合乎范本樣式條件的文檔或目錄,比find快很多。因為該命令是從數據庫內查找,並不是在磁盤上直接查找。
locate的速度比find快,它並不是真的查找,而是查數據庫,一般文件數據庫在/var/lib/slocate/slocate.db中,所以locate的查找並不是實時的,而是以數據庫的更新為准,一般是系統會每天更新一次,也可以手工升級數據庫。
安裝命令
1 [root@localhost ~]# yum install -y mlocate
更新命令
1 [root@localhost ~]# updatedb
基本語法
1 locate [選項] 關鍵字
選項說明
1 -i:忽略大小寫的差異。 2 -c:不輸出文件名,僅計算找到的文件數量。 3 -l 行數:表示僅輸出指定行數。 4 -S:輸出locate所使用的文件或目錄的相關屬性。 5 -r:使用正則表達式進行搜索。
使用舉例
1 [root@localhost ~]# locate hello.zip 2 /home/hello.zip 3 [root@localhost ~]#