<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux 查找文件的正確方式

          共 2945字,需瀏覽 6分鐘

           ·

          2021-02-06 08:57

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          ? 作者?|? C_nullptr

          來源 |? urlify.cn/3ERZv2

          76套java從入門到精通實(shí)戰(zhàn)課程分享

          Linux 系統(tǒng)中查找文件的命令有?whichwhereislocate?和?find?等,本文對這四條命令進(jìn)行簡單的介紹、列舉了一些簡單的使用方式。

          which

          在 PATH 變量中定義的全部路徑中查找可執(zhí)行文件或腳本

          which?命令有兩個(gè)重要參數(shù):

          • -all, -a?默認(rèn)情況下,which?命令會在匹配到第一個(gè)結(jié)果后結(jié)束運(yùn)行,添加該參數(shù)可以讓其搜索所有路徑。

          • -read-alias, -i?將輸入視為別名搜索。Linux 系統(tǒng)中通常會使用 alias 設(shè)置諸多別名來簡寫命令,例如 Centos 中的?ll?實(shí)際是?ls -l?,而?which?是?alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde

            # Centos
            # 以絕對路徑調(diào)用 which,這樣就不會受到 Centos 默認(rèn)的幾個(gè)參數(shù)影響
            # 返回結(jié)果說明找不到 ll 命令
            $ /usr/bin/which ll
            /usr/bin/which: no ll in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

            #
            直接輸入 which 時(shí)實(shí)際效果為帶有“默認(rèn)參數(shù)”的
            # 返回結(jié)果說明 ll 是 ls -l 的別名,
            $ which ll
            alias ll='ls -l --color=auto'
            /usr/bin/ls

            which ll?相當(dāng)于?alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde ll,返回結(jié)果第一行是 alias 輸出的?ll?別名設(shè)置情況,第二行則是?ls?的實(shí)際位置。

          which?的其他幾個(gè)參數(shù)如下:

          • --tty-only:盡在終端調(diào)用的情況下附帶右側(cè)添加的參數(shù),其他情況下不接收右側(cè)其他參數(shù)(此處的參數(shù)值?--show-dot--show-tilde?此類,輸入的待查詢命令仍然會接收),通過這個(gè)命令可以保證 Shell 腳本中的?which?命令正確執(zhí)行。

          • --show-dot:輸出以 "." 符號開頭的目錄。Linux 中 "." 符號開頭的目錄是約定的隱藏文件夾,沒有該參數(shù)時(shí)會忽略這些目錄。

          • --show-tilde:將用戶家目錄替換成 "~" 符號輸出。Linux 中 "~" 符號是登錄用戶家目錄的縮寫,如果登錄用戶名為 cncsl,則 "~" 指 "/home/cncsl" 目錄。當(dāng)使用 root 賬號登錄時(shí)該參數(shù)無效。

          whereis

          查找指定命令的可執(zhí)行文件、源代碼和手冊的位置。

          $ whereis vim
          vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

          可以看出,vim?的可執(zhí)行程序位于?/usr/bin/vim,手冊位于?/usr/share/vim?和?/share/man/man1/vim.1.gz?目錄。

          • -b-m?和?-s?分別用于指定僅查詢可執(zhí)行文件、手冊和源代碼。

          • -B-M和?-S?命令用于指定查詢路徑。

          • -u?參數(shù)的描述直譯為?僅查詢有異常情況的命令。所謂的異常情況是指,某個(gè)命令的相關(guān)類型文件不止恰好一份(一份都沒有或多于一份)。例如:

            • ls?命令具有兩份手冊:

              $ whereis -m -u ls
              ls: /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
            • Linux 系統(tǒng)中有很多個(gè)與 python 相關(guān)的可執(zhí)行文件:

              $ whereis -b -u python
              python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7

          locate

          在文檔和目錄名稱的數(shù)據(jù)庫中查找指定文件。Linux 系統(tǒng)會定期自動掃描磁盤來維護(hù)一個(gè)記錄磁盤數(shù)據(jù)的數(shù)據(jù)庫,而?locate?命令使用的數(shù)據(jù)庫是?/var/lib/mlocate/mlocate.db

          $ ls -hl /var/lib/mlocate/mlocate.db
          -rw-r-----. 1 root slocate 2.7M Feb 4 03:42 /var/lib/mlocate/mlocate.db

          可以看出當(dāng)前?mlocate.db?文件共記錄了 2.7M 的數(shù)據(jù)。

          • --count, -c?:不輸出具體的文件路徑信息,僅輸出查詢到的數(shù)量。

          • --ignore-case, -i:查詢時(shí)忽略大小寫

          • --limit, -l, -n LIMIT:限定輸出的文件數(shù)量為 LIMIT

          • --regexp,-r REGEXP:使用 REGEXP 指定的正則表達(dá)式匹配。

          # 統(tǒng)計(jì)有多少PNG格式的圖像文件
          $ locate -c png

          #
          統(tǒng)計(jì)有多少 readme 文件(根據(jù)編寫者的習(xí)慣,readme 文件可能名為 README、ReadMe等)
          $ locate -c -i readme

          #
          輸出十個(gè) .gz 歸檔文件的路徑
          $ locate -l 10 *.gz

          #
          查看 tomcat 2021年1月的日志
          $ locate -r tomcat.2021-01-[0-3][0-9].log

          由于?locate?命令是從數(shù)據(jù)庫查找文件,新創(chuàng)建的文件可能由于未被記錄到數(shù)據(jù)庫中而無法查詢到,這種時(shí)候需要使用?updatedb?命令手動更新數(shù)據(jù)庫。

          find

          在一個(gè)目錄層級中查找文件。

          find?命令功能強(qiáng)大,可根據(jù)多種條件查詢文件,隨后進(jìn)行自定義的操作,格式如下:

          find [path...] [expression]
          • 查詢當(dāng)前目錄下所有的 markdown 文檔:

            $ find . -name "*.log"
          • 查詢用戶視頻文件夾中大于 100M 的文件:

            $ find ~/Videos/ -size +100M
          • 查詢用戶音樂文件夾中過去七天訪問過的文件:

            $ find ~/Music/ -atime -7
          • 查詢系統(tǒng)中、三個(gè)月之前創(chuàng)建的、一個(gè)月之內(nèi)沒有訪問過、大于 30M 的日志文件,并刪除:

            find / -ctime +90 -atime +30 -size +1M -name "*.log" -delete

          find?會實(shí)際的掃描磁盤,所以速度會明顯小于前三個(gè)。




          粉絲福利:Java從入門到入土學(xué)習(xí)路線圖

          ??????

          ??長按上方微信二維碼?2 秒


          感謝點(diǎn)贊支持下哈?

          瀏覽 50
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91热视频 | 国产夫妻久久 | 玩弄孕妇人妻系列 | 国产乱婬AⅤ片免费 | 国产在线成人视频 |