<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Linux查找文件6個高效工具

            2021-02-02    分類: 網(wǎng)站建設

            1. 前言

            請關(guān)注本頭條號,每天堅持更新原創(chuàng)干貨技術(shù)文章。

            如需學習視頻,請在微信搜索公眾號“智傳網(wǎng)優(yōu)”直接開始自助視頻學習

            我們使用Linux過程中,經(jīng)常會有搜索文件的需求,那么Linux命令下有哪些工具可以快速查找文件呢?先來了解一下這些工具:


            linux查找文件

            1.1 find命令

            Linux find 命令是所有 Linux 命令中最有用的一個,同時也是最混亂的一個。它很難,因為它的語法與其他 Linux 命令的標準語法不同。但是,它很強大,因為它允許您按文件名、文件類型、用戶甚至是時間戳查找文件。使用 find 命令,您不但可以找到具這些屬性任意組合的文件,還可以對它找到的文件執(zhí)行操作。

            1.2 locate命令

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

            1.3 grep命令

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

            grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。

            1.4 whereis命令

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

            1.5 which命令

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

            1.6 type命令

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

            1.7 總結(jié)

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

            whereis 查看文件的位置。

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

            find 實際搜尋硬盤查詢文件名稱。

            type 區(qū)分命令類型

            2. find命令使用案例

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

            查找zcwyou.txt這個文件,從/開始查找,即在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 從某個目錄開始查找文件

            從當前用戶的家目錄開始查找

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

            從當前目錄開始查找

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

            從/var目錄開始查找

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

            2.3 忽略大小寫

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

            使用選項-iname

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

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

            使用選項-type

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

            b - 塊設備文件。

            d - 目錄。

            c - 字符設備文件。

            p - 管道文件。

            l - 符號鏈接文件。

            f - 普通文件。

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

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

            在當前目錄下查找除目錄以外的所有類型的文件

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

            在/etc目錄下查找所有的符號鏈接文件

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

            2.5 基于目錄深度搜索

            查找當前目錄及向下大深度限制為3的所有文件

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

            2.6 基本文件時間查找

            使用格式:

            find . -type f 時間類型

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

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

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

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

            搜索最近七天內(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

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

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

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

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

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

            使用格式:

            find . -type f -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 查找后刪除

            刪除當前目錄下所有.test文件

            [root@zcwyou ~]# find . -type f -name "*.test" -delete

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

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

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

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

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

            找出當前目錄用戶zcwyou擁有的所有文件

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

            找出當前目錄用戶組zcwyou擁有的所有文件

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

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

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

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

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

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

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

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

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

            3.2 與xargs結(jié)合

            在使用find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后,就會出現(xiàn)溢出錯誤。錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。

            find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。

            在有些系統(tǒng)中,使用-exec選項會為處理每一個匹配到的文件而發(fā)起一個相應的進程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會出現(xiàn)進程過多,系統(tǒng)性能下降的問題,因而效率不高;

            而使用xargs命令則只有一個進程。另外,在使用xargs命令時,究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會根據(jù)該命令的選項及系統(tǒng)內(nèi)核中相應的可調(diào)參數(shù)來確定。

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

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

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

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

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

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

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

            刪除當前目錄下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可以使用戶對所匹配到的文件執(zhí)行幾乎所有的命令。

            4. locate命令

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

            以CentOS7.5最小化安裝為例,默認情況下,系統(tǒ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個連續(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文件中查找整個單詞,而不是字符串的一部分(如匹配’test’,而不是’tester123’),

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

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

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

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

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

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

            [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 的行,此時,使用的命令為:

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

            6. whereis命令

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

            whereis命令的使用實例:

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

            [root@zcwyou ~]# whereis pwd

            輸出結(jié)果:

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

            7. which命令

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

            [root@zcwyou ~]# which wget

            輸出結(jié)果:

            /usr/bin/wget

            8. type命令

            查找wget程序的位置

            [root@zcwyou ~]# type wget

            輸出結(jié)果:

            wget is /usr/bin/wget

            查找du程序的位置,使用選項-p,相當于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'/

            網(wǎng)頁標題:Linux查找文件6個高效工具
            地址分享:http://www.jbt999.com/news35/98785.html

            成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、做網(wǎng)站、App設計、響應式網(wǎng)站、微信小程序、關(guān)鍵詞優(yōu)化

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            成都定制網(wǎng)站網(wǎng)頁設計

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 韩国毛片在线 | 杨思敏一级婬片A片 | 成人性爱福利视频在线 | 污污污视频网站在线免费观看 | 男女日皮的视频 |