Linux中文件的五個(gè)查找命令總結(jié)
Linux的查找命令有5個(gè),分別如下:
which
:在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果;
type
:用于區(qū)分某個(gè)命令到底是由shell自帶的,還是由shell外部的獨(dú)立二進(jìn)制文件提供的。如果一個(gè)命令是外部命令,那么使用-p參數(shù),會(huì)顯示該命令的路徑,相當(dāng)于which
命令。type
命令其實(shí)不能算查找命令;
whereis
:只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s);
locate
:相當(dāng)于find -name
,可快速查找文件;
find
:最常用和最強(qiáng)大的查找命令,可以用它找到任何想找的文件。
注意:
通常find
不很常用,因?yàn)樗俣嚷?/p>
常都是先使用whereis
或者locate
來檢查,當(dāng)真的找不到了,才用find查找。
是因?yàn)?code>whereis與locate
是利用數(shù)據(jù)庫(kù)來查找數(shù)據(jù),所以相當(dāng)快速,而且沒有實(shí)際查詢硬盤,比較節(jié)省時(shí)間。
whereis
和locate
尋找的數(shù)據(jù)是由已創(chuàng)建的數(shù)據(jù) /var/lib/
中查找。但是數(shù)據(jù)庫(kù)的更新默認(rèn)是每天更新一次(不同系統(tǒng)可能會(huì)有差異),所以當(dāng)新建文件或刪除文件后去查找該文件,whereis
和locate
會(huì)告訴你文件“not found”,因?yàn)楸仨毟聰?shù)據(jù)庫(kù)了。
要手動(dòng)更新數(shù)據(jù)庫(kù)的方法也很簡(jiǎn)單,直接輸入updatedb
即可。updatedb
命令回去讀取/etc/updatedb.conf中的配置,然后去硬盤里面進(jìn)行查找文件名操作,最后更新整個(gè)數(shù)據(jù)庫(kù)文件。
下面詳細(xì)講解以上5個(gè)命令的使用:
一、which:查找系統(tǒng)命令位置
which
命令在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。
which命令的格式如下:
which [-a] command
which命令的參數(shù)如下:
-a:將所有由PATH目錄中可以找到的命令均列出來,而不是只列出第一個(gè)被找到的命令。
例子:
[root@www ~] # which ifconfig /sbin/ifconfig
二、whereis:程序名搜索
whereis
命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。
whereis命令的格式如下:
whereis [-bmsu] 文件或目錄名
whereis命令的參數(shù)如下:
-b 只查找二進(jìn)制格式的文件
-m 只查找在說明文件manual路徑下的文件
-s 只招source源文件
-u 查找不在上述三個(gè)選項(xiàng)當(dāng)中的其他特殊文件
例子:
[root@www ~] # whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz [root@www ~] # whereis -m ifconfig ifconfig: /usr/share/man/man8/ifconfig.8.gz
三、locate:利用數(shù)據(jù)庫(kù)查找文件
locate命令的格式如下:
locate [-ir] keyword
locate命令的參數(shù)如下:
-i:忽略大小寫差異;
-r:后面可接正則表達(dá)式的實(shí)現(xiàn)方式。
例如:
[root@www ~] # locate passwd /etc/passwd /etc/passwd- /etc/news/passwd.nntp /etc/pam.d/passwd
四、find:查找任何文件
find命令的格式如下:
find [PATH] [option] [action]
4.1 find參數(shù):基于文件名的搜索
與文件名有關(guān)的參數(shù)如下:
-name filename:查找文件名為filename的文件。filename可使用正則表達(dá)式表示。
例子:
[root@www ~] # find / -name passwd
查找文件名為passwd的文件。
4.2 find參數(shù):基于文件大小的搜索
與文件大小有關(guān)的參數(shù)如下:
-size SIZE:查找文件大小剛好等于SIZE的文件;
-size -SIZE:查找文件大小大于SIZE的文件;
-size +SIZE:查找文件大小小于SIZE的文件。
其中,SIZE的單位有:
c —— byte,字節(jié);
w —— 字(2字節(jié));
b —— bit,塊(512字節(jié));
k —— 千字節(jié);
M —— 兆字節(jié);
G —— 吉字節(jié)。
例子:
[root@www ~] # find . -type f -size +10k 搜索大于10KB的文件 [root@www ~] # find . -type f -size 10k 搜索等于10KB的文件
4.3 find參數(shù):基于文件類型的搜索
與文件類型有關(guān)的參數(shù)如下:
-type TYPE:查找文件的類型為TYPE的文件。
TYPE的參數(shù)列表有:
f :普通文件;
l :符號(hào)連接;
d :目錄;
c :字符設(shè)備;
b :塊設(shè)備;
s :套接字;
p :FIFO。
例子:
[root@www ~] # find /var -type s
查找/var目錄下所有類型為socket的文件。
4.4 find參數(shù):基于目錄深度的搜索
與目錄深度有關(guān)的參數(shù)如下:
-maxdepth n:n為數(shù)字,表示向下最大深度限制為n;
-mindepth n:n為數(shù)字,搜索出深度距離當(dāng)前目錄至少n個(gè)子目錄的所有文件。
例子:
[root@www ~] # find . -maxdepth 3 -type f 向下最大深度限制為3 [root@www ~] # find . -mindepth 2 -type f 搜索出深度距離當(dāng)前目錄至少2個(gè)子目錄的所有文件
4.5 find參數(shù):基于時(shí)間進(jìn)行搜索
與時(shí)間有關(guān)的參數(shù)共有 -atime、-ctime、-mtime。下面以 -mtime 說明:
-mtime n: n為數(shù)字,列出在n天之前的“一天之內(nèi)”被更改過的文件名;
-mtime +n:列出在n天之前(不含第n天本身)被更改過的文件名;
-mtime -n:列出在n天之內(nèi)(不含第n天本身)被更改過的文件名;
-newer file:file為一個(gè)存在的文件,列出比file還要新的文件名。
例子:
[root@www ~] # find /etc -mtime 0 查找從現(xiàn)在開始到24小時(shí)前,/etc目錄下所有改動(dòng)過內(nèi)容的文件都會(huì)被列出來。 [root@www ~] # find /ect -newer /etc/passwd 查找/etc目錄下,所有比/etc/passwd文件更新的文件。
4.6 find參數(shù):基于用戶或用戶組名進(jìn)行搜索
與用戶或用戶組名有關(guān)的參數(shù)如下:
-uid n:n為數(shù)字,表示用戶的UID;
-gid n:n為數(shù)字,表示用戶的GID;
-user name:name為用戶賬號(hào)名稱;
-group name:name為用戶組名;
-nouser:尋找文件的所有者不存在于/etc/passwd的文件;
-nogroup:尋找文件的所有用戶組不存在于/etc/group的文件。
例子:
[root@www ~] # find /home -user root
查找root用戶在/home目錄下的所有文件。
4.7 find參數(shù):基于文件權(quán)限進(jìn)行搜索
與文件權(quán)限有關(guān)的參數(shù)如下:
-perm mode:查找文件權(quán)限剛好等于mode的文件;
-perm +mode:查找文件權(quán)限“包含任一mode的權(quán)限”的文件;
-perm -mode:查找文件權(quán)限“必須要全部包括mode的權(quán)限”的文件。
例子:
[root@www ~] # find / -perm +7000
查找必須含有---s--s--t的所有三個(gè)權(quán)限的文件。
4.8 find命令的其它一些技巧
4.8.1 查找所有長(zhǎng)度為零的文件:
find . -empty
4.8.2 查找在n分鐘內(nèi)被修改的文件:
find . -cmin -60
查找一個(gè)小時(shí)內(nèi)文件狀態(tài)改變的文件(也就是60分鐘內(nèi))。
4.8.3 僅僅查找非隱藏的文件(不顯示隱藏文件):
find . \( ! -regex ".*/\..*" \)
顯示當(dāng)前目錄及其子目錄下的文件,并且只列出非隱藏文件。
五、type:顯示指定命令的類型
type
命令用來顯示指定命令的類型,判斷給出的指令是內(nèi)部指令還是外部指令。
type命令格式如下:
type [option] [commond]
type命令的參數(shù)有:
-t:輸出“file”、“alias”或者“builtin”,分別表示給定的指令為“外部指令”、“命令別名”或者“內(nèi)部指令”;
-p:如果給出的指令為外部指令,則顯示其絕對(duì)路徑;
-a:在環(huán)境變量“PATH”指定的路徑中,顯示給定指令的信息,包括命令別名。
命令的類型可能有如下幾種:
alias: 別名;
keyword: 關(guān)鍵字,Shell保留字;
function: 函數(shù),Shell函數(shù);
builtin: 內(nèi)建命令,Shell內(nèi)建命令;
file: 文件,磁盤文件,外部命令;
unfound: 沒有找到。
例子:
[root@www ~] # type cd cd is a shell builtin [root@www ~] # type date date is /bin/date [root@www ~] # type mysql mysql is /usr/bin/mysql [root@www ~] # type nginx -bash: type: nginx: not found [root@www ~] # type if if is a shell keyword
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
linux在終端輸入密碼時(shí)顯示星號(hào)的實(shí)現(xiàn)方法
這篇文章主要介紹了如何在終端輸入密碼時(shí)顯示星號(hào)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02Linux高級(jí)篇學(xué)習(xí)手冊(cè)(一)
Linux是一個(gè)非常優(yōu)秀的操作系統(tǒng),與MS-WINDOWS相比具有可靠、 穩(wěn)定、速度快等優(yōu)點(diǎn),且擁有豐富的根據(jù)UNIX版本改進(jìn)的強(qiáng)大功能。下面,作為一個(gè)典型的DOS 和WINDOWS用戶,讓我們一起來學(xué)習(xí)Linux的一些主要命令2021-07-07SWsoft公司推出Windows版Linux服務(wù)器軟件
SWsoft公司推出Windows版Linux服務(wù)器軟件...2006-10-10