欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Linux培訓(xùn)之查找文件六個(gè)高效工具大全

2019-07-05 14:00:50 2179瀏覽

今天千鋒扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一篇關(guān)于Linux查找文件6個(gè)高效工具的詳細(xì)介紹,首先我們使用Linux過程中,經(jīng)常會(huì)有搜索文件的需求,那么Linux命令下有哪些工具可以快速查找文件呢?先來了解一下這些工具。



linux查找文件

1.1find命令

Linuxfind命令是所有Linux命令中最有用的一個(gè),同時(shí)也是最混亂的一個(gè)。它很難,因?yàn)樗恼Z法與其他Linux命令的標(biāo)準(zhǔn)語法不同。但是,它很強(qiáng)大,因?yàn)樗试S您按文件名、文件類型、用戶甚至是時(shí)間戳查找文件。使用find命令,您不但可以找到具這些屬性任意組合的文件,還可以對(duì)它找到的文件執(zhí)行操作。

1.2locate命令

Linuxlocate命令用于查找符合條件的文檔,他會(huì)去保存文檔和目錄名稱的數(shù)據(jù)庫內(nèi),查找合乎范本樣式條件的文檔或目錄。locate讓使用者可以很快速的搜尋檔案系統(tǒng)內(nèi)是否有指定的檔案。其方法是先建立一個(gè)包括系統(tǒng)內(nèi)所有檔案名稱及路徑的數(shù)據(jù)庫,之后當(dāng)尋找時(shí)就只需查詢這個(gè)數(shù)據(jù)庫,而不必實(shí)際深入檔案系統(tǒng)之中了。在一般的distribution之中,數(shù)據(jù)庫的建立都被放在crontab中自動(dòng)執(zhí)行。

1.3grep命令

Linuxgrep命令用于查找文件里符合條件的字符串。grep也可以根據(jù)文件名查找文件,但一般用于查找文件內(nèi)的內(nèi)容。

grep(globalsearchregularexpression(RE)andprintouttheline,全面搜索正則表達(dá)式并把行打印出來)是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。

1.4whereis命令

whereis命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。

1.5which命令

which命令的作用是,在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。也就是說,使用which命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個(gè)位置的命令。

1.6type命令

type命令其實(shí)不能算查找命令,它是用來區(qū)分某個(gè)命令到底是由shell自帶的,還是由shell外部的獨(dú)立二進(jìn)制文件提供的。如果一個(gè)命令是外部命令,那么使用-p參數(shù),會(huì)顯示該命令的路徑,相當(dāng)于which命令。

1.7總結(jié)

which查看可執(zhí)行文件的位置。

whereis查看文件的位置。

locate配合數(shù)據(jù)庫查看文件位置。

find實(shí)際搜尋硬盤查詢文件名稱。

type區(qū)分命令類型

2.find命令使用案例

2.1根據(jù)文件名查找

查找zcwyou.txt這個(gè)文件,從/開始查找,即在Linux所有掛載的分區(qū)和目錄中查找。

[root@zcwyou ~]# find / -name zcwyou.txt 

只查找.txt結(jié)尾的文件

[root@zcwyou ~]# find / -name '*.txt' 

查找txt和pdf結(jié)尾的文件

[root@zcwyou ~]# find . -name "*.txt" -o -name "*.pdf" 

2.2從某個(gè)目錄開始查找文件

從當(dāng)前用戶的家目錄開始查找

[root@zcwyou ~]# find ~ -name zcwyou.txt 

從當(dāng)前目錄開始查找

[root@zcwyou ~]# find . -name zcwyou.txt 

從/var目錄開始查找

[root@zcwyou ~]# find /var -name zcwyou.txt 

2.3忽略大小寫

查找文件名帶有abc的文件,忽略大小寫

使用選項(xiàng)-iname

[root@zcwyou ~]# find / -iname *abc* 

2.4根據(jù)文件類型查找

使用選項(xiàng)-type

查找某一類型的文件,例如:

b-塊設(shè)備文件。

d-目錄。

c-字符設(shè)備文件。

p-管道文件。

l-符號(hào)鏈接文件。

f-普通文件。

在/etc目錄下查找所有的目錄,并打印出來

[root@zcwyou ~]# find /etc -type d -print  

在當(dāng)前目錄下查找除目錄以外的所有類型的文件

[root@zcwyou ~]# find . ! -type d -print 

在/etc目錄下查找所有的符號(hào)鏈接文件

[root@zcwyou ~]# find . ! -type d -print

2.5基于目錄深度搜索

查找當(dāng)前目錄及向下最大深度限制為3的所有文件

[root@zcwyou ~]# find . -maxdepth 3 -type f 

2.6基本文件時(shí)間查找

使用格式:

find.-typef時(shí)間類型

UNIX/Linux文件系統(tǒng)每個(gè)文件都有三種時(shí)間類型:

訪問時(shí)間(-atime/天,-amin/分鐘):用戶最近一次訪問時(shí)間。

修改時(shí)間(-mtime/天,-mmin/分鐘):文件最后一次修改時(shí)間。

變化時(shí)間(-ctime/天,-cmin/分鐘):文件數(shù)據(jù)元(例如權(quán)限等)最后一次修改時(shí)間。

搜索最近七天內(nèi)被訪問過的所有文件

[root@zcwyou ~]# find . -type f -atime -7 

搜索恰好在七天前被訪問過的所有文件

[root@zcwyou ~]# find . -type f -atime 7 

搜索超過七天內(nèi)被訪問過的所有文件

[root@zcwyou ~]# find . -type f -atime +7 

搜索訪問時(shí)間超過10分鐘的所有文件

[root@zcwyou ~]# find . -type f -amin +10 

找出比file.log修改時(shí)間更長的所有文件

[root@zcwyou ~]# find . -type f -newer file.log 

2.7根據(jù)文件大小查找

使用格式:

find.-typef-size文件大小

文件大小單元:

b------塊(512字節(jié))

c------字節(jié)

w------字(2字節(jié))

k------千字節(jié)

M------兆字節(jié)

G------吉字節(jié)

查找大于10KB的文件

[root@zcwyou ~]# find . -type f -size +10k 

查找小于30M的文件

[root@zcwyou ~]# find . -type f -size -30M 

搜索等于55MB的文件

[root@zcwyou ~]# find . -type f -size 55M 

2.8查找后刪除

刪除當(dāng)前目錄下所有.test文件
[root@zcwyou ~]# find . -type f -name "*.test" -delete 

2.9根據(jù)文件權(quán)限/所有權(quán)進(jìn)行匹配

當(dāng)前目錄下搜索出權(quán)限為755的文件

[root@zcwyou ~]# find . -type f -perm 755 

找出當(dāng)前目錄下權(quán)限不是600的php文件

[root@zcwyou ~]# find . -type f -name "*.php" ! -perm 600 

找出當(dāng)前目錄用戶zcwyou擁有的所有文件

[root@zcwyou ~]# find . -type f -user zcwyou 

找出當(dāng)前目錄用戶組zcwyou擁有的所有文件

[root@zcwyou ~]# find . -type f -group zcwyou 

3.find結(jié)合其他工具

3.1借助-exec選項(xiàng)與其他命令結(jié)合使用

找出當(dāng)前目錄下所有root的文件,并把所有權(quán)更改為用戶zcwyou

[root@zcwyou ~]# find .-type f -user root -exec chown zcwyou {} ; 

{}用于與-exec選項(xiàng)結(jié)合使用來匹配所有文件,然后會(huì)被替換為相應(yīng)的文件名。

找出自己家目錄下所有的.txt文件并刪除

[root@zcwyou ~]# find $HOME/. -name "*.txt" -ok rm {} ; 

示例中的-ok和-exec行為一樣,不過它會(huì)給出提示,是否執(zhí)行相應(yīng)的操作。

3.2與xargs結(jié)合

在使用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ù)來確定。

來看看xargs命令是如何同find命令一起使用的,并給出一些例子。

查找系統(tǒng)中的每一個(gè)普通文件,然后使用xargs命令來測試它們分別屬于哪類文件

[root@zcwyou ~]# find . -type f -print | xargs file 

在整個(gè)系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲(chǔ)文件(coredump),然后把結(jié)果保存到/tmp/core.log文件中:

[root@zcwyou ~]# find / -name "core" -print | xargs echo "" >/tmp/core.log 

用grep命令在所有的普通文件中搜索hostname這個(gè)詞

[root@zcwyou ~]# find . -type f -print | xargs grep "hostname" 

刪除當(dāng)前目錄下30天以前的所有東西

[root@zcwyou ~]# find . -ctime +30 -exec rm -rf {} ; 

或者

[root@zcwyou ~]# find ./ -mtime +30 -print|xargs rm -f -r 

刪除文件大小為零的文件

[root@zcwyou ~]# find ./ -size 0 | xargs rm -f & 

find命令配合使用exec和xargs可以使用戶對(duì)所匹配到的文件執(zhí)行幾乎所有的命令。

4.locate命令

locate命令其實(shí)是“find-name”的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個(gè)數(shù)據(jù)庫,CentOS7數(shù)據(jù)庫的位置在/var/lib/locatedb,CentOS6數(shù)據(jù)庫位置在/var/lib/mlocate/mlocate.db,這個(gè)數(shù)據(jù)庫中含有本地所有文件信息。Linux系統(tǒng)自動(dòng)創(chuàng)建這個(gè)數(shù)據(jù)庫,默認(rèn)情況下每天自動(dòng)更新一次,所以使用locate命令查不到最新變動(dòng)過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動(dòng)更新數(shù)據(jù)庫。

以CentOS7.5最小化安裝為例,默認(rèn)情況下,系統(tǒng)并沒有集成該工具,需要手動(dòng)安裝它:

安裝locate工具:

[root@zcwyou ~]# yum -y install mlocate 

看到以下輸出表明安裝成功:

Total download size: 113 k

Installed size: 379 k

Downloading packages:

mlocate-0.26-8.el7.x86_64.rpm | 113 kB 00:00:01

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : mlocate-0.26-8.el7.x86_64 1/1

Verifying : mlocate-0.26-8.el7.x86_64 1/1

Installed:

mlocate.x86_64 0:0.26-8.el7

Complete!

更新數(shù)據(jù)庫,即把系統(tǒng)中所有文件信息寫入數(shù)據(jù)庫/var/lib/mlocate/mlocate.db

[root@zcwyou ~]# updatedb 

查看以.txt結(jié)尾的文件:

[root@zcwyou ~]# locate *.txt 

輸出結(jié)果:

/root/abc.txt

/root/cisco1.txt

/root/cisco2.txt

/root/compress.txt

/root/cp1.txt

/root/cp2.txt

/root/cut.txt

/root/cut2.txt

/root/diff1.txt

/root/diff2.txt

/root/test.txt

/root/zcwyou.txt

5.grep命令查找文本內(nèi)容

5.1根據(jù)內(nèi)容查找

顯示所有以d開頭的文件中包含test的行。

[root@zcwyou ~]# grep 'test' d* 

顯示在aa,bb,cc文件中匹配test的行。

[root@zcwyou ~]# grep 'test' aa bb cc 

顯示所有包含每行字符串至少有5個(gè)連續(xù)小寫字符的字符串的行

[root@zcwyou ~]# grep ‘[a-z]{5}’ aa 

顯示/usr/src目錄下的文件(不含子目錄)包含test的行

[root@zcwyou ~]# grep test /usr/src 

顯示/usr/src目錄下的文件(包含子目錄)包含test的行

[root@zcwyou ~]# grep -r test /usr/src 

在zcwyou.txt文件中查找整個(gè)單詞,而不是字符串的一部分(如匹配’test’,而不是’tester123’),

[root@zcwyou ~]# grep -w test zcwyou.txt 

不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫

[root@zcwyou ~]# grep -i test zcwyou.txt 

查找關(guān)鍵字test,列出包括test的文件名,在當(dāng)前目錄找

[root@zcwyou ~]# grep -l test *.txt 

查找關(guān)鍵字test,列出不包括test的文件名,在當(dāng)前目錄找

[root@zcwyou ~]# grep -L test *.txt 

5.2以遞歸的方式查找符合條件的文件

在/var/log及其子目錄里,查找?guī)в衧hutdown關(guān)鍵字的文件

[root@zcwyou ~]# grep -r shutdown /var/log 

5.3反向查找

通過"-v"參數(shù)可以打印出不符合條件行的內(nèi)容。

查找文件名中包含test的文件中不包含test的行,此時(shí),使用的命令為:

[root@zcwyou ~]# grep -v test *test* 

6.whereis命令

whereis命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。

whereis命令的使用實(shí)例:

查看pwd命令程序所有的位置以及說明文件所在的位置

[root@zcwyou ~]# whereis pwd 

輸出結(jié)果:

pwd:/usr/bin/pwd/usr/share/man/man1/pwd.1.gz

7.which命令

which命令的作用是,在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。也就是說,使用which命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個(gè)位置的命令。

[root@zcwyou ~]# which wget 

輸出結(jié)果:

/usr/bin/wget

8.type命令

查找wget程序的位置

[root@zcwyou ~]# type wget 

輸出結(jié)果:

wgetis/usr/bin/wget

查找du程序的位置,使用選項(xiàng)-p,相當(dāng)于which命令

[root@zcwyou ~]# type -p du 

輸出結(jié)果

/usr/bin/du

查找cd程序的位置,顯示為builtin,即為Linux內(nèi)置命令

[root@zcwyou ~]# type cd 

輸出結(jié)果表明,cd命令為系統(tǒng)集成命令。

cd is a shell builtin

查找ll程序的位置

[root@zcwyou ~]# type ll 

輸出結(jié)果表示,ll是ls-l的別名。

ll is aliased to `ls -l --color=auto'/

以上就是關(guān)于千鋒扣丁學(xué)堂Linux培訓(xùn)之查找文件六個(gè)高效工具大全的全部內(nèi)容,想要學(xué)好Linux開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動(dòng)吧。扣丁學(xué)堂Linux技術(shù)交流群:422345477。


                          【掃碼進(jìn)入HTML5VIP免費(fèi)公開課】  


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】        【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: Linux培訓(xùn) Linux視頻教程 紅帽Linux視頻 Linux學(xué)習(xí)視頻 Linux入門視頻 紅帽RHCE/RHCSA考試

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部