




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、find pathname -options -print -exec -ok .【功能】find用于查找符合某些特性的文件。由于find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來(lái)了解一下。即使系統(tǒng)中含有網(wǎng)絡(luò)文件系統(tǒng)( NFS),find命令在該文件系統(tǒng)中同樣有效,只你具有相應(yīng)的權(quán)限?!九e例】*按名稱*在當(dāng)前目錄中查找任何擴(kuò)展名為“.c”的文件:$find ./ -name '*.c' 或$find ./ -name *.c或$find -name '*.c'輸入之后,輸出如下:./hello.c./1/main.c./1/hello.
2、c./hello2.c這里,當(dāng)前目錄只用"."也行,如果不用轉(zhuǎn)義,*.c必須括在引號(hào)(單/雙)當(dāng)中,如果不指定路徑,將在當(dāng)前目錄找;默認(rèn)把子目錄下的也都找出來(lái)了。*到 ./test、./viStudy目錄查找所有 .c 文件:$find test viStudy/ -name '*.c'輸入之后,輸出如下:test/test_out_direct.cviStudy/hello.cviStudy/1/main.cviStudy/1/hello.cviStudy/hello2.c這里,如果您沒(méi)有相應(yīng)的權(quán)限,您在開(kāi)始瀏覽許多目錄時(shí)將生成錯(cuò)誤消息例如如下的提示:fi
3、nd: /tmp/orbit-root: Permission denied可以不讓錯(cuò)誤輸出,防止混亂:$find /usr /home /tmp -name "*.jar" 2>/dev/null*不區(qū)分大小寫的 find查找:$find downloads -iname '*.gif'輸入之后,輸出如下:downloads/.xvpics/Calendar05_enlarged.gifdownloads/lcmgcfexsmall.GIF這里,默認(rèn)情況下,find 是區(qū)分大小寫的。對(duì)于不區(qū)分大小寫的 find,將 -iname 測(cè)試替換為 -nam
4、e 。*列出當(dāng)前目錄和所有子目錄中的所有文件(包括隱藏文件)的完整清單:$find 或$find .或$find . -print輸入之后,輸出如下:./any./tags./hello.c./1./1/main.c.省略.*按類型*查找某(當(dāng)前)目錄中的所有子目錄:$find . -type d或find -type d輸入之后,輸出如下:./1*查找某(當(dāng)前)目錄中的所有符號(hào)鏈接:$find . -type l輸入之后輸出如下:./hello2s這里,./hello2s是一個(gè)軟鏈接,這個(gè)命令顯示的也是軟鏈接。其他 find 可以找到的文件類型包括:b 塊(緩存)特殊c 字符(未緩存)特殊p
5、 命名管道 (FIFO)s 套接字 用ls列出軟鏈接需要用-ls,用管道不行。如下:$find . type l -ls輸出:56231215 0 lrwxrwxrwx 1 quietheart member 6 May 16 16:14 ./hello2s -> hello2*從當(dāng)前目錄開(kāi)始查找位于本文件系統(tǒng)中文件名以XC結(jié)尾的文件:$ find . -name "*.XC" -mount -print這里,在當(dāng)前的文件系統(tǒng)中查找文件(不進(jìn)入其他文件系統(tǒng)),使用了find命令的mount選項(xiàng)。*告知 find 在指定文件系統(tǒng)(例如vfat)中查找:$find / -
6、name "*.txt" -fstype vfat還有find / -name "*.txt" -mount 2等等,不常用就不多說(shuō)了。*按時(shí)間*查找在最近 1 *24小時(shí)內(nèi)修改的所有文件:$find . -mtime -1輸入之后輸出如下:./plsql/FORALLSample./plsql/RegExpDNASample/plsql/RegExpSample*查找恰好在 1 *24小時(shí)以前修改的所有文件:$find . -mtime 1*查找 1 *24個(gè)多小時(shí)以前修改的所有文件: $find . -mtime +1 這里,find根據(jù)系統(tǒng)的時(shí)間戳
7、搜索文件的選項(xiàng)。這些時(shí)間戳包括:mtime 文件內(nèi)容上次修改時(shí)間 atime 文件被讀取或訪問(wèn)的時(shí)間ctime 文件狀態(tài)變化時(shí)間這里,ctime 則需要更多的解釋。由于 inode 維護(hù)著每個(gè)文件上的元數(shù)據(jù),因此,如果與文件有關(guān)的元數(shù)據(jù)發(fā)生變化,則 inode 數(shù)據(jù)也將變化。這可能是由一系列操作引起的,包括創(chuàng)建到文件的符號(hào)鏈接、更改文件權(quán)限或移動(dòng)了文件等。由于在這些情況下,文件內(nèi)容不會(huì)被讀取或修改,因此 mtime 和 atime 不會(huì)改變,但 ctime 將發(fā)生變化。這些時(shí)間選項(xiàng)都需要與一個(gè)值 n 結(jié)合使用,指定為 -n、n 或 +n:-n 返回項(xiàng)小于 n +n 返回項(xiàng)大于 n n 返回項(xiàng)正
8、好與 n 相等*查找在不到 1 分鐘以前讀取的所有文件:$find . -amin -1輸入之后,輸出如下:./.bashrc/.bash_history./.xauthj5FCx1這里是剛剛登陸系統(tǒng)就運(yùn)行了這個(gè)命令,所以輸出這樣。默認(rèn)情況下,-mtime、-atime 和 -ctime 指的是最近 24 小時(shí)。但是,如果它們前面加上了開(kāi)始時(shí)間選項(xiàng),則 24 小時(shí)的周期將從當(dāng)日的開(kāi)始時(shí)間算起。您還可以使用 mmin、amin 和 cmin 查找在不到 1 小時(shí)的時(shí)間內(nèi)變化了的時(shí)間戳。 應(yīng)該注意的是,使用 find 命令查找文件本身將更改該文件的訪問(wèn)時(shí)間作為其元數(shù)據(jù)的一部分。*查找在當(dāng)前目錄中h
9、ello2.c文件之后被編輯過(guò)的所有文件:$find . -newer hello2.c輸入之后輸出如下:./hello2s./hello2h./hello2這里,需要注意硬鏈接的特殊性(我不說(shuō),只有你明白了才知道我說(shuō)的意思)。使用 -newer、-anewer 和 cnewer 選項(xiàng)與特定的文件比較查找已修改或訪問(wèn)過(guò)的文件。這類似于 -mtime、-atime 和 ctime。 -newer 指內(nèi)容最近被修改的文件-anewer 指最近被讀取過(guò)的文件-cnewer 指狀態(tài)最近發(fā)生變化的文件*查找更改時(shí)間比文件httpd1.conf新但比文件temp舊的文件:$find -newer http
10、d1.conf ! -newer temp -ls其中,!是邏輯非符號(hào)。*按大小*查找所有大于 5MB 的用戶文件:$find / -size +5000000c 2> /dev/null輸入之后,輸出如下:/var/log/lastlog/var/log/cups/access_log.4/var/spool/mail/bluher這里,把錯(cuò)誤的信息定位到/dev/null了。結(jié)尾的“c”以字節(jié)為單位報(bào)告我們的結(jié)果。默認(rèn)情況下,find 以 512 字節(jié)塊的數(shù)量報(bào)告大小。如果我們將“c”替換為“k”,我們還會(huì)看到以千字節(jié)的數(shù)量報(bào)告的結(jié)果,如果使用“w”,則會(huì)看到以兩字節(jié)字的數(shù)量報(bào)告的結(jié)
11、果。*在當(dāng)前目錄下查找長(zhǎng)度超過(guò)10塊的文件(一塊等于512字節(jié)): $ find . -size +10 -print*搜索所有零字節(jié)文件并將它們移至 /tmp/zerobyte 文件夾:$find test -type f -size 0 -exec mv /tmp/zerobyte ;這里,-exec 操作允許 find 在它遇到的文件上執(zhí)行任何 shell 命令。在本文的后面部分,您將看到其用法的更多示例。大括號(hào)允許移動(dòng)每個(gè)空文件。*查找test目錄下的空文件:$find test -empty 輸入之后輸出如下:test/footest/test查找空文件用的是-empty選項(xiàng)。*按權(quán)
12、限、所屬*在當(dāng)前目錄下查找文件權(quán)限位為755的文件:$ find . -perm 755 -print還有一種表達(dá)方法:在八進(jìn)制數(shù)字前面要加一個(gè)橫杠-,表示都匹配,如-007就相當(dāng)于777,-006相當(dāng)于666.*查找屬于user1name或著屬于user2name的文件:$find / -user user1name -or -user user2name*查找既屬于user1name又屬于user2name用戶的文件:$find / -user user1name -and -user2name*查找在系統(tǒng)中屬于非用戶(?)的文件:$find /nouser*查找在系統(tǒng)中屬于usernam
13、e的文件:$find / -user username *查找在系統(tǒng)中屬于groupname的文件:$find / -group groupname *按指定目錄*希望在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找:$ find /apps -path "/apps/bin" -prune -o -print在使用-prune選項(xiàng)時(shí)要當(dāng)心,因?yàn)槿绻阃瑫r(shí)使用了-depth選項(xiàng),那么-prune選項(xiàng)就會(huì)被find命令忽略。*在/usr/sam目錄下查找不在dir1子目錄之內(nèi)的所有文件:$find /usr/sam -path "/usr/sam/
14、dir1" -prune -o -print 這里,find -path . expression 在路徑列表的后面的是表達(dá)式,-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o-print 的簡(jiǎn)寫表達(dá)式按順序求值, -a 和 -o 都是短路求值,與 shell 的 && 和 | 類似如果 -path "/usr/sam" 為真,則求值 -prune , -prune 返回真,與邏輯表達(dá)式為真;否則不求值 -prune,與邏輯表達(dá)
15、式為假。如果 -path "/usr/sam" -a -prune 為假,則求值 -print ,-print返回真,或邏輯表達(dá)式為真;否則不求值 -print,或邏輯表達(dá)式為真。這個(gè)表達(dá)式組合特例可以用偽碼寫為if -path "/usr/sam" then -pruneelse -print*避開(kāi)多個(gè)文件夾:find /usr/sam ( -path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -print這里,圓括號(hào)表示表達(dá)式的結(jié)合。 表示引用,即指示 shell 不對(duì)后面的字符作特殊解釋,而
16、留給 find 命令去解釋其意義。*確保先在一個(gè)目錄中進(jìn)行查找,然后才在其子目錄中進(jìn)行查找:$find -name "*test*" -depth輸入之后,輸出:./test/test./test./localbin/test./localbin/test_shell_var./localbin/test.txt./test2/test/test./test2/test./test2*讓 find 在至少下至目錄樹(shù)三個(gè)級(jí)別的目錄中查找:$find / -mindepth 3 -name "*log"*在目錄樹(shù)的前三個(gè)級(jí)別中查找日志文件:$find / -
17、maxdepth 3 -name "*log"*查找并執(zhí)行命令:*用ls -l命令列出所匹配到的文件:$ find . -type f -exec ls -l ;輸入之后,輸出:-rw-r-r- 1 root root 34928 2003-02-25 ./conf/httpd.conf-rw-r-r- 1 root root 12959 2003-02-25 ./conf/magic-rw-r-r- 1 root root 180 2003-02-25 ./conf.d/README這里,exec選項(xiàng)后面跟隨著所要執(zhí)行的命令或腳本,然后是一對(duì)兒,一個(gè)空格和一個(gè),最后是一個(gè)
18、分號(hào),注意內(nèi)可以沒(méi)有空格,但是后面、前面要有一個(gè)空格。*在/logs目錄中查找更改時(shí)間在5日以前的文件并刪除它們:$ find logs -type f -mtime +5 -exec rm ;在shell中用任何方式刪除文件之前,應(yīng)當(dāng)先查看相應(yīng)的文件,一定要小心!當(dāng)使用諸如mv或rm命令時(shí),可以使用-exec選項(xiàng)的安全模式。*當(dāng)前目錄中查找所有文件名以.LOG結(jié)尾、更改時(shí)間在5日以上的文件并刪除,刪除之前先給提示:$ find . -name "*.conf" -mtime +5 -ok rm ;輸入之后,輸出如下提示:< rm . ./conf/httpd.con
19、f > ? n這里,按y鍵刪除文件,按n鍵不刪除。*匹配所有文件名為“ passwd*”的文件,然后執(zhí)行g(shù)rep命令看這些文件中是否存在sam用戶:$find /etc -name "passwd*" -exec grep "sam" ;輸入之后,輸出:sam:x:501:501:/usr/sam:/bin/bash*當(dāng)前目錄中文件屬主具有讀、寫權(quán)限,并且文件所屬組的用戶和其他用戶具有讀權(quán)限的文件:$ find . -type f -perm 644 -exec ls -l ;*查找/var/logs目錄中更改時(shí)間在7日以前的普通文件,并在刪除之前
20、詢問(wèn)它們:$ find /var/logs -type f -mtime +7 -ok rm ;*查找系統(tǒng)中所有屬于root組的文件:$find . -group root -exec ls -l ;輸入之后,輸出:-rw-r-r- 1 root root 595 10月 31 01:09 ./fie1這里實(shí)際不用-exec也行,即:$find . -group root。不過(guò)為了更詳細(xì)列出相關(guān)的信息,使用exec選項(xiàng)對(duì)每個(gè)文件執(zhí)行了ls。*查找并刪除訪問(wèn)時(shí)間在7日以來(lái)、含有數(shù)字后綴的admin.log文件:$ find . -name "admin.log0-90-90-9&quo
21、t; -atime -7 -ok rm ;輸入之后,輸出:< rm . ./admin.log001 > ? n< rm . ./admin.log002 > ? n< rm . ./admin.log042 > ? n< rm . ./admin.log942 > ? n這里,只尋找了3位數(shù)的數(shù)字。*高效的查找執(zhí)行:使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn)溢出錯(cuò)誤;還可能導(dǎo)致有些系統(tǒng)進(jìn)程過(guò)
22、多,系統(tǒng)性能下降的問(wèn)題,因而效率不高.使用xargs命令則只有一個(gè)進(jìn)程。另外,在使用xargs命令時(shí),究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會(huì)根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來(lái)確定。xargs命令同find命令一起使用的一些例子:*查找系統(tǒng)中的每一個(gè)普通文件,然后使用xargs命令來(lái)測(cè)試它們分別屬于哪類文件:$find . -type f -print | xargs file輸入之后,輸出:./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text./.kde/Autostart/.dir
23、ectory: ISO-8859 text.省略.*當(dāng)前目錄下查找"file"開(kāi)頭的文件然后把結(jié)果保存到/tmp/core.log 文件中:$find . -name "file*" -print | xargs echo "" > /temp/core.log*在當(dāng)前目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限:$find . -perm -7 -print | xargs chmod o-w*用grep命令在當(dāng)前目錄下的所有的普通文件中搜索hostname這個(gè)詞:$find . -type f -prin
24、t | xargs grep "hostname"或$find . -name * -type f -print | xargs grep "hostname"輸入之后,輸出:./httpd1.conf:# different IP addresses or hostnames and have them handled by the./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames on your注意,這里, 用來(lái)取消find命令中的*在shel
25、l中的特殊含義。*【描述】1)find命令的參數(shù);find 的所有參數(shù)均為可選pathname: find命令所查找的目錄路徑。例如用.來(lái)表示當(dāng)前目錄,用/來(lái)表示系統(tǒng)根目錄。-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' ;,注意 和;之間的空格。-ok: 和-exec的作用相同,只不過(guò)以一種更為安全的模式來(lái)執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來(lái)確定是否執(zhí)行。2)find命令選項(xiàng)-name 按照文件名查找文件。-perm 按照文件權(quán)限來(lái)查找文件。-prune 使用這一選項(xiàng)可以使find命令不在當(dāng)前指定的目錄中查找,如果同時(shí)使用-depth選項(xiàng),那么-prune將被find命令忽略。-user 按照文件屬主來(lái)查找文件。-group 按照文件所屬的組來(lái)查找文件。-mtime -n +n 按照文件的更改時(shí)間來(lái)查找文件, - n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+ n表示文件更改時(shí)間距現(xiàn)在n天以前。find命令還有-atime和-ctime 選項(xiàng),但它們都和-m time選項(xiàng)。-nogroup 查找無(wú)有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。-nouser 查找無(wú)有效屬主的文件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳食品安全風(fēng)險(xiǎn)評(píng)估與防控合同
- 綜合體大樓特色主題空間裝修工程合同
- 汽車抵押貸款擔(dān)保協(xié)議
- 無(wú)人機(jī)傾斜攝影驗(yàn)收專題報(bào)告
- 髕骨脫位的治療效果評(píng)估
- 教育培訓(xùn)公關(guān)案例
- 超市商品盤點(diǎn)流程規(guī)范
- 腫瘤患者血凝管理
- 兒科心血管護(hù)理
- 人類遺傳資源管理培訓(xùn)
- 云計(jì)算試題及答案
- 政治●湖北卷丨2024年湖北省普通高中學(xué)業(yè)水平選擇性考試政治試卷及答案
- 中醫(yī)醫(yī)院現(xiàn)代醫(yī)院管理制度章程
- 無(wú)錫市2024-2025學(xué)年四年級(jí)下學(xué)期數(shù)學(xué)期末試題一(有答案)
- 2024年醫(yī)生三基三嚴(yán)模擬習(xí)題(附答案解析)
- 2025春季學(xué)期國(guó)家安全教育期末考試-國(guó)開(kāi)(XJ)-參考資料
- 醫(yī)學(xué)教育常識(shí)考試試題及答案
- 智能在線問(wèn)卷調(diào)查系統(tǒng)開(kāi)發(fā)合同
- 汽車4S店展廳布局設(shè)計(jì)
- 酒店客房經(jīng)理培訓(xùn)
- 2025年廣東省珠海市香洲區(qū)5月中考模擬化學(xué)試題(含答案)
評(píng)論
0/150
提交評(píng)論