which 查看可執(zhí)行文件的位置
- 命令格式:
which 可執(zhí)行文件名稱 - 命令功能:
which指令會(huì)在PATH變量指定的路徑中揪惦,搜索某個(gè)系統(tǒng)命令的位置专普,并且返回第一個(gè)搜索結(jié)果粘昨。 - 命令參數(shù):
-n 指定文件名長度瞻讽,指定的長度必須大于或等于所有文件中最長的文件名倾剿。
-p 與-n參數(shù)相同筷频,但此處的包括了文件的路徑。
-w 指定輸出時(shí)欄位的寬度前痘。
-V 顯示版本信息 - 使用實(shí)例:
查找文件凛捏、顯示命令路徑:
which lsmod
用 which 去找出 which:
which which
whereis 定位可執(zhí)行文件
- 命令格式:
whereis [-bmsu] [BMS 目錄名 -f ] 文件名 - 命令功能:
whereis命令是定位可執(zhí)行文件、源代碼文件际度、幫助文件在文件系統(tǒng)中的位置葵袭。這些文件的屬性應(yīng)屬于原始代碼,二進(jìn)制文件乖菱,或是幫助文件坡锡。whereis 程序還具有搜索源代碼蓬网、指定備用搜索路徑和搜索不尋常項(xiàng)的能力。 - 命令參數(shù):
-b 定位可執(zhí)行文件鹉勒。
-m 定位幫助文件帆锋。
-s 定位源代碼文件。
-u 搜索默認(rèn)路徑下除可執(zhí)行文件禽额、源代碼文件锯厢、幫助文件以外的其它文件。
-B 指定搜索可執(zhí)行文件的路徑脯倒。
-M 指定搜索幫助文件的路徑实辑。
-S 指定搜索源代碼文件的路徑。 - 使用實(shí)例:
將和**文件相關(guān)的文件都查找出來:
whereis svn
只將二進(jìn)制文件查找出來:
whereis -b svn
locate 快速定位文件位置
- 命令格式:
Locate [選擇參數(shù)] [樣式] - 命令功能:
locate命令可以在搜尋數(shù)據(jù)庫時(shí)快速找到檔案藻丢,數(shù)據(jù)庫由updatedb程序來更新剪撬,updatedb是由cron daemon周期性建立的,locate命令在搜尋數(shù)據(jù)庫時(shí)比由整個(gè)由硬盤資料來搜尋資料來得快悠反,但較差勁的是locate所找到的檔案若是最近才建立或 剛更名的残黑,可能會(huì)找不到,在內(nèi)定值中斋否,updatedb每天會(huì)跑一次梨水,可以由修改crontab來更新設(shè)定值。(etc/crontab)
locate指定用在搜尋符合條件的檔案茵臭,它會(huì)去儲(chǔ)存檔案與目錄名稱的數(shù)據(jù)庫內(nèi)疫诽,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”” 或”?”等)來指定范本樣式旦委,如指定范本為kcpaner, locate會(huì)找出所有起始字串為kcpa且結(jié)尾為ner的檔案或目錄踊沸,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會(huì)列出該目錄下包括 子目錄在內(nèi)的所有檔案。
locate指令和find找尋檔案的功能類似社证,但locate是透過update程序?qū)⒂脖P中的所有檔案和目錄資料先建立一個(gè)索引數(shù)據(jù)庫逼龟,在 執(zhí)行l(wèi)oacte時(shí)直接找該索引,查詢速度會(huì)較快追葡,索引數(shù)據(jù)庫一般是由操作系統(tǒng)管理腺律,但也可以直接下達(dá)update強(qiáng)迫系統(tǒng)立即修改索引數(shù)據(jù)庫。 - 命令參數(shù):
-e 將排除在尋找的范圍之外宜肉。
-1 如果 是 1.則啟動(dòng)安全模式匀钧。在安全模式下,使用者不會(huì)看到權(quán)限無法看到 的檔案谬返。這會(huì)始速度減慢之斯,因?yàn)?locate 必須至實(shí)際的檔案系統(tǒng)中取得檔案的 權(quán)限資料。
-f 將特定的檔案系統(tǒng)排除在外遣铝,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案 放在資料庫中佑刷。
-q 安靜模式莉擒,不會(huì)顯示任何錯(cuò)誤訊息。
-n 至多顯示 n個(gè)輸出瘫絮。
-r 使用正規(guī)運(yùn)算式 做尋找的條件涨冀。
-o 指定資料庫存的名稱。
-d 指定資料庫的路徑
-h 顯示輔助訊息
-V 顯示程式的版本訊息 - 使用實(shí)例:
查找和pwd相關(guān)的所有文件:
locate pwd
搜索etc目錄下所有以sh開頭的文件:
locate /etc/sh
find 搜索文件
- 命令格式:
find pathname -options [-print -exec -ok ...] - 命令功能:
用于在文件樹種查找文件麦萤,并作出相應(yīng)的處理 - 命令參數(shù):
pathname: find命令所查找的目錄路徑鹿鳖。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄壮莹。
-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出翅帜。
-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' { } ;命满,注意{ }和\藕甩;之間的空格。
-ok: 和-exec的作用相同周荐,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前僵娃,都會(huì)給出提示概作,讓用戶來確定是否執(zhí)行。 - 命令選項(xiàng):
-name 按照文件名查找文件默怨。
-perm 按照文件權(quán)限來查找文件讯榕。
-prune 使用這一選項(xiàng)可以使find命令不在當(dāng)前指定的目錄中查找,如果同時(shí)使用-depth選項(xiàng)匙睹,那么-prune將被find命令忽略愚屁。
-user 按照文件屬主來查找文件。
-group 按照文件所屬的組來查找文件痕檬。
-mtime -n +n 按照文件的更改時(shí)間來查找文件霎槐, - n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+ n表示文件更改時(shí)間距現(xiàn)在n天以前梦谜。find命令還有-atime和-ctime 選項(xiàng)丘跌,但它們都和-m time選項(xiàng)。
-nogroup 查找無有效所屬組的文件唁桩,即該文件所屬的組在/etc/groups中不存在闭树。
-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在荒澡。
-newer file1 ! file2 查找更改時(shí)間比文件file1新但比文件file2舊的文件报辱。
-type 查找某一類型的文件,諸如:
b - 塊設(shè)備文件单山。
d - 目錄碍现。
c - 字符設(shè)備文件幅疼。
p - 管道文件。
l - 符號(hào)鏈接文件鸵赫。
f - 普通文件衣屏。
-size n:[c] 查找文件長度為n塊的文件,帶有c時(shí)表示文件長度以字節(jié)計(jì)辩棒。-depth:在查找文件時(shí)狼忱,首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找一睁。
-fstype:查找位于某一類型文件系統(tǒng)中的文件钻弄,這些文件系統(tǒng)類型通常可以在配置文件/etc/fstab中找到者吁,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息窘俺。
-mount:在查找文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)。
-follow:如果find命令遇到符號(hào)鏈接文件复凳,就跟蹤至鏈接所指向的文件瘤泪。
-cpio:對(duì)匹配的文件使用cpio命令,將這些文件備份到磁帶設(shè)備中育八。
另外,下面三個(gè)的區(qū)別:
-amin n 查找系統(tǒng)中最后N分鐘訪問的文件
-atime n 查找系統(tǒng)中最后n24小時(shí)訪問的文件
-cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件
-ctime n 查找系統(tǒng)中最后n24小時(shí)被改變文件狀態(tài)的文件
-mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件
-mtime n 查找系統(tǒng)中最后n*24小時(shí)被改變文件數(shù)據(jù)的文件 - 使用實(shí)例:
查找指定時(shí)間內(nèi)修改過的文件 :
find -atime -2
根據(jù)關(guān)鍵字查找 :
find . -name ".log"
按照目錄或文件的權(quán)限來查找文件 :
find /usr/fqw/ -perm 777
按類型查找 :
find . -type f -name ".log"
查找當(dāng)前所有目錄并排序:
find . -type d | sort
按大小查找文件:
find . -size +1000c -print
find命令之exec
find是我們很常用的一個(gè)Linux命令对途,但是我們一般查找出來的并不僅僅是看看而已,還會(huì)有進(jìn)一步的操作髓棋,這個(gè)時(shí)候exec的作用就顯現(xiàn)出來了实檀。
exec解釋:
-exec 參數(shù)后面跟的是command命令,它的終止是以;為結(jié)束標(biāo)志的按声,所以這句命令后面的分號(hào)是不可缺少的膳犹,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加反斜杠签则。
{} 花括號(hào)代表前面find查找出來的文件名须床。
使用find時(shí),只要把想要的操作寫在一個(gè)文件里渐裂,就可以用exec來配合find查找侨颈,很方便的。在有些操作系統(tǒng)中只允許-exec選項(xiàng)執(zhí)行諸如l s或ls -l這樣的命令芯义。大多數(shù)用戶使用這一選項(xiàng)是為了查找舊文件并刪除它們哈垢。建議在真正執(zhí)行rm命令刪除文件之前,最好先用ls命令看一下扛拨,確認(rèn)它們是所要?jiǎng)h除的文件耘分。 exec選項(xiàng)后面跟隨著所要執(zhí)行的命令或腳本,然后是一對(duì)兒{ },一個(gè)空格和一個(gè)\求泰,最后是一個(gè)分號(hào)央渣。為了使用exec選項(xiàng),必須要同時(shí)使用print選項(xiàng)。如果驗(yàn)證一下find命令,會(huì)發(fā)現(xiàn)該命令只輸出從當(dāng)前路徑起的相對(duì)路徑及文件名褥赊。
- 實(shí)例
ls -l命令放在find命令的-exec選項(xiàng)中:
find . -type f -exec ls -l {} ;
在目錄中查找更改時(shí)間在n日以前的文件并刪除它們:
find . -type f -mtime +14 -exec rm {} ;
在目錄中查找更改時(shí)間在n日以前的文件并刪除它們,在刪除之前先給出提示:
find . -name ".log" -mtime +5 -ok rm {} ;
-exec中使用grep命令:
find /etc -name "passwd" -exec grep "root" {} ;
查找文件移動(dòng)到指定目錄 :
find . -name ".log" -exec mv {} .. ;
用exec選項(xiàng)執(zhí)行cp命令 :
find . -name ".log" -exec cp {} test3 ;
find命令之barges
在使用 find命令的-exec選項(xiàng)處理匹配到的文件時(shí)拔第, find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長度有限制场钉,這樣在find命令運(yùn)行幾分鐘之后蚊俺,就會(huì)出現(xiàn)溢出錯(cuò)誤。錯(cuò)誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”逛万。這就是xargs命令的用處所在泳猬,特別是與find命令一起使用。
find命令把匹配到的文件傳遞給xargs命令宇植,而xargs命令每次只獲取一部分文件而不是全部得封,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件指郁,然后是下一批忙上,并如此繼續(xù)下去。
在有些系統(tǒng)中坡氯,使用-exec選項(xiàng)會(huì)為處理每一個(gè)匹配到的文件而發(fā)起一個(gè)相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行洋腮;這樣在有些情況下就會(huì)出現(xiàn)進(jìn)程過多箫柳,系統(tǒng)性能下降的問題,因而效率不高啥供; 而使用xargs命令則只有一個(gè)進(jìn)程悯恍。另外,在使用xargs命令時(shí)伙狐,究竟是一次獲取所有的參數(shù)涮毫,還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會(huì)根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來確定贷屎。
- 使用實(shí)例:
查找系統(tǒng)中的每一個(gè)普通文件罢防,然后使用xargs命令來測(cè)試它們分別屬于哪類文件 :
find . -type f -print | barges file
在整個(gè)系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲(chǔ)文件(core dump) ,然后把結(jié)果保存到/tmp/core.log 文件中:
find / -name "core" -print | xargs echo "" >/tmp/core.log
在當(dāng)前目錄下查找所有用戶具有讀唉侄、寫和執(zhí)行權(quán)限的文件咒吐,并收回相應(yīng)的寫權(quán)限:
find . -perm -7 -print | xargs chmod o-w
用grep命令在所有的普通文件中搜索hostname這個(gè)詞
find . -type f -print | xargs grep "hostname"