小編給大家分享一下linux如何通過find命令查找東西,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、萊蕪網(wǎng)絡(luò)推廣、小程序定制開發(fā)、萊蕪網(wǎng)絡(luò)營銷、萊蕪企業(yè)策劃、萊蕪品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供萊蕪建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
使用 find
,你可以選擇一個(gè)起點(diǎn)或從你所在的位置開始。要選擇的搜索的起點(diǎn),請?jiān)趩卧~ find
后輸入它。例如,find /usr
或 find ./bin
將在 /usr
目錄或當(dāng)前位置下的 bin
目錄開始搜索,而 find ~
將在你的主目錄中開始搜索,即使你當(dāng)前位于當(dāng)前文件系統(tǒng)中的其他位置。
最常用的搜索策略之一是按名稱搜索文件。這需要使用 -name
選項(xiàng)。
默認(rèn)情況下,find
會顯示找到的文件的完整路徑。如果你在命令中添加 -print
,你會看到同樣的結(jié)果。如果你想查看與文件相關(guān)的詳細(xì)信息—-例如:文件的長度、權(quán)限等,你需要在你的 find
命令的末尾添加 -ls
參數(shù)。
$ find ~/bin -name tryme/home/shs/bin/tryme$ find ~/bin -name tryme -print/home/shs/bin/tryme$ find ~/bin -name tryme -ls 917528 4 -rwx------ 1 shs shs 139 Apr 8 2019 /home/shs/bin/tryme
你也可以使用子字符串來查找文件。例如,如果你將上面示例中的 tryme
替換為 try*
,你將會找到所有名稱以 try
開頭的文件。(LCTT 譯注:如果要使用通配符 *
,請將搜索字符串放到單引號或雙引號內(nèi),以避免通配符被 shell 所解釋)
按名稱查找文件可能是 find
命令最典型的用法,不過還有很多其他的方式來查找文件,并且有這樣做的需要。下面的部分展示了如何使用其他可用的方式。
此外,當(dāng)按文件大小、組、索引節(jié)點(diǎn)等條件來搜索文件時(shí),你需要確認(rèn)找到的文件與你要查找的文件是否相匹配。使用 -ls
選項(xiàng)來顯示細(xì)節(jié)是非常有用。
按大小查找文件需要使用 -size
選項(xiàng)并且對相應(yīng)規(guī)范使用一點(diǎn)技巧。例如,如果你指定 -size 189b
,你將找到 189 個(gè)塊大小的文件,而不是 189 個(gè)字節(jié)。(LCTT 譯注:如果不跟上單位,默認(rèn)單位是 b
。一個(gè)塊是 512 個(gè)字節(jié)大小,不足或正好 512 個(gè)字節(jié)將占據(jù)一個(gè)塊。)對于字節(jié),你需要使用 --size 189c
(字符)。而且,如果你指定 --size 200w
,你將會找到 200 個(gè)“字”的文件——以“雙字節(jié)增量”為單位的字,而不是“我們互相談?wù)摰哪切┦虑椤敝械膯卧~。你還可以通過以千字節(jié)(k
)、兆字節(jié)(M
)和千兆字節(jié)(G
)為單位提供大小來查找文件。(LCTT 譯注:乃至還有 T
、P
)
大多數(shù)情況下,Linux 用戶會搜索比選定大小要大的文件。例如,要查找大于 1 千兆字節(jié)的文件,你可以使用這樣的命令,其中 +1G
表示“大于 1 千兆字節(jié)”:
$ find -size +1G -ls 2>/dev/null 787715 1053976 -rw-rw-r-- 1 shs shs 1079263432 Dec 21 2018 ./backup.zip 801834 1052556 -rw-rw-r-- 1 shs shs 1077809525 Dec 21 2018 ./2019/hold.zip
你可以通過用于維護(hù)文件元數(shù)據(jù)(即除文件內(nèi)容和文件名之外的所有內(nèi)容)的索引節(jié)點(diǎn)來查找文件。
$ find -inum 919674 -ls 2>/dev/null 919674 4 -rw-rw-r-- 1 shs shs 512 Dec 27 15:25 ./bin/my.log
按所有者或組查找文件也非常簡單。這里我們使用 sudo
來解決權(quán)限問題。
$ sudo find /home -user nemo -name "*.png" -ls 1705219 4 drwxr-xr-x 2 nemo nemo 4096 Jan 28 08:50 /home/nemo/Pictures/me.png
在下面這個(gè)命令中,我們尋找一個(gè)被稱為 admins
的多用戶組擁有的文件。
# find /tmp -group admins -ls 262199 4 -rwxr-x--- 1 dory admins 27 Feb 16 18:57 /tmp/testscript
你可以使用如下命令所示的 -nouser
選項(xiàng)來查找不屬于當(dāng)前系統(tǒng)上的任何用戶的文件。
# find /tmp -nouser -ls262204 4 -rwx------ 1 1016 1016 17 Feb 17 16:42 /tmp/hello
請注意,該列表顯示了舊用戶的 UID 和 GID,這清楚地表明該用戶未在系統(tǒng)上定義。這種命令將查找?guī)粢褟南到y(tǒng)中刪除的用戶創(chuàng)建在主目錄之外的文件,或者在用戶帳戶被刪除后而未被刪除的主目錄中創(chuàng)建的文件。類似地,-nogroup
選項(xiàng)也會找到這樣的文件,尤其是當(dāng)這些用戶是相關(guān)組的唯一成員時(shí)。
在此命令中,我們在特定用戶的主目錄中查找過去 24 小時(shí)內(nèi)更新過的文件。sudo
用于搜索另一個(gè)用戶的主目錄。
$ sudo find /home/nemo -mtime -1/home/nemo/home/nemo/snap/cheat/home/nemo/tryme
-ctime
選項(xiàng)可以幫助你查找在某個(gè)參考時(shí)間范圍內(nèi)狀態(tài)(如權(quán)限)發(fā)生更改的文件。以下是查找在最后一天內(nèi)權(quán)限發(fā)生更改的文件的示例:
$ find . -ctime -1 -ls 787987 4 -rwxr-xr-x 1 shs shs 189 Feb 11 07:31 ./tryme
請記住,顯示的日期和時(shí)間只反映了對文件內(nèi)容進(jìn)行的最后更新。你需要使用像 stat
這樣的命令來查看與文件相關(guān)聯(lián)的三個(gè)狀態(tài)(文件創(chuàng)建、修改和狀態(tài)更改)。
在這個(gè)命令中,我們使用 -atime
選項(xiàng)查找在過去兩天內(nèi)訪問過的本地 pdf 文件。
$ find -name "*.pdf" -atime -2./Wingding_Invites.pdf
你可以使用 -newer
選項(xiàng)來查找比其他文件更新的文件。
$ find . -newer dig1 -ls 786434 68 drwxr-xr-x 67 shs shs 69632 Feb 16 19:05 . 1064442 4 drwxr-xr-x 5 shs shs 4096 Feb 16 11:06 ./snap/cheat 791846 4 -rw-rw-r-- 1 shs shs 649 Feb 13 14:26 ./dig
沒有相應(yīng)的 -older
選項(xiàng),但是你可以用 ! -newer
(即更舊)得到類似的結(jié)果,它們基本上一樣。
通過文件類型找到一個(gè)文件,你有很多選項(xiàng)——常規(guī)文件、目錄、塊和字符文件等等。以下是文件類型選項(xiàng)列表:
b 塊特殊文件(緩沖的)c 字符特殊文件(無緩沖的)d 目錄p 命名管道(FIFO)f 常規(guī)文件l 符號鏈接s 套接字
這里有一個(gè)尋找符號鏈接的例子:
$ find . -type l -ls 805717 0 lrwxrwxrwx 1 shs shs 11 Apr 10 2019 ./volcano -> volcano.pdf 918552 0 lrwxrwxrwx 1 shs shs 1 Jun 16 2018 ./letter -> pers/letter2mom
-mindepth
和 -maxdepth
選項(xiàng)控制在文件系統(tǒng)中搜索的深度(從當(dāng)前位置或起始點(diǎn)開始)。
$ find -maxdepth 3 -name "*loop"./bin/save/oldloop./bin/long-loop./private/loop
在這個(gè)命令中,我們尋找空文件,但不進(jìn)入目錄及其子目錄。
$ find . -maxdepth 2 -empty -type f -ls 917517 0 -rw-rw-r-- 1 shs shs 0 Sep 23 11:00 ./complaints/newfile 792050 0 -rw-rw-r-- 1 shs shs 0 Oct 4 19:02 ./junk
你可以使用 -perm
選項(xiàng)查找具有特定權(quán)限集的文件。在下面的示例中,我們只查找常規(guī)文件(-type f
),以避免看到符號鏈接,默認(rèn)情況下符號鏈接被賦予了這種權(quán)限,即使它們所引用的文件是受限的。
$ find -perm 777 -type f -lsfind: ‘./.dbus’: Permission denied 798748 4 -rwxrwxrwx 1 shs shs 15 Mar 28 2019 ./runme
如果使用如下命令,你可以使用 find
命令定位并刪除文件:
$ find . -name runme -exec rm {} \;
{}
代表根據(jù)搜索條件找到的每個(gè)文件的名稱。
一個(gè)非常有用的選項(xiàng)是將 -exec
替換為 -ok
。當(dāng)你這樣做時(shí),find
會在刪除任何文件之前要求確認(rèn)。
$ find . -name runme -ok rm -rf {} \;< rm ... ./bin/runme > ?
刪除文件并不是 -ok
和 -exec
能為你做的唯一事情。例如,你可以復(fù)制、重命名或移動(dòng)文件。
以上是“l(fā)inux如何通過find命令查找東西”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!