国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

find和xargs使用詳解

2024-07-21 02:34:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  有時(shí)可能需要在系統(tǒng)中查找具有某一特征的文件(例如文件權(quán)限、文件屬主、文件長(zhǎng)度、文件類(lèi)型等等)。這樣做可能有很多原因。可能出于安全性的考慮,或是一般性的系統(tǒng)治理任務(wù),或許只是為了找出一個(gè)不知保存在什么地方的文件。 F i n d是一個(gè)非常有效的工具,它可以遍歷當(dāng)前目錄甚至于整個(gè)文件系統(tǒng)來(lái)查找某些文件或目錄。
  在本章中,我們介紹以下內(nèi)容:
  * find命令選項(xiàng)。
  * 使用f i n d命令不同選項(xiàng)的例子。
  * 配合f i n d使用x a rg s命令的例子。
  由于f i n d具有如此強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來(lái)了解一下。即使系統(tǒng)中含有網(wǎng)絡(luò)文件系統(tǒng)( N F S ),f i n d命令在該文件系統(tǒng)中同樣有效,只要你具有相應(yīng)的權(quán)限。 在運(yùn)行一個(gè)非常消耗資源的f i n d命令時(shí),很多人都傾向于把它放在后臺(tái)執(zhí)行,因?yàn)楸闅v一個(gè)大的文件系統(tǒng)可能會(huì)花費(fèi)很長(zhǎng)的時(shí)間(這里是指3 0 G字節(jié)以上的文件系統(tǒng))。
  F i n d命令的一般形式為:
  find pathname -options [-PRint -exec -ok]
  讓我們來(lái)看看該命令的參數(shù):
  pathname find命令所查找的目錄路徑。例如用.來(lái)表示當(dāng)前目錄,用/來(lái)表示系統(tǒng)根目錄。
  -print find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
  -exec find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的s h e l l命令。相應(yīng)命令的形式為' c o m m -
  and' {} /;,注重{ }和/;之間的空格。
  -ok 和- e x e c的作用相同,只不過(guò)以一種更為安全的模式來(lái)執(zhí)行該參數(shù)所給出的s h e l l命令,
  在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶(hù)來(lái)確定是否執(zhí)行。
  find命令選項(xiàng)
  f i n d命令有很多選項(xiàng)或表達(dá)式,每一個(gè)選項(xiàng)前面跟隨一個(gè)橫杠-。讓我們先來(lái)看一下該命令的主要選項(xiàng),然后再給出一些例子。
  -name 按照文件名查找文件。
  -perm 按照文件權(quán)限來(lái)查找文件。
  -prune 使用這一選項(xiàng)可以使f i n d命令不在當(dāng)前指定的目錄中查找,假如同時(shí)使用了- d e p t h
  選項(xiàng),那么- p r u n e選項(xiàng)將被f i n d命令忽略。
  -user 按照文件屬主來(lái)查找文件。
  -group 按照文件所屬的組來(lái)查找文件。
  -mtime -n +n 按照文件的更改時(shí)間來(lái)查找文件, - n表示文件更改時(shí)間距現(xiàn)在n天以?xún)?nèi),+ n 表示文件更改時(shí)間距現(xiàn)在n天以前。F i n d命令還有- a t i m e和- c t i m e選項(xiàng),但它們都和- m t i m e選項(xiàng)
  相似,所以我們?cè)谶@里只介紹- m t i m e選項(xiàng)。
  -nogroup 查找無(wú)有效所屬組的文件,即該文件所屬的組在/ e t c / g r o u p s中不存在。
  -nouser 查找無(wú)有效屬主的文件,即該文件的屬主在/ e t c / p a s s w d中不存在。
  -newer file1 ! file2 查找更改時(shí)間比文件f i l e 1新但比文件f i l e 2舊的文件。
  -type 查找某一類(lèi)型的文件,諸如:
  b - 塊設(shè)備文件。
  d - 目錄。
  c - 字符設(shè)備文件。
  p - 管道文件。
  l - 符號(hào)鏈接文件。
  f - 普通文件。
  -size n[c] 查找文件長(zhǎng)度為n塊的文件,帶有c時(shí)表示文件長(zhǎng)度以字節(jié)計(jì)。
  -depth 在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。
  -fstype 查找位于某一類(lèi)型文件系統(tǒng)中的文件,這些文件系統(tǒng)類(lèi)型通常可以在配置文件
  / e t c / f s t a b中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。
  -mount 在查找文件時(shí)不跨越文件系統(tǒng)m o u n t點(diǎn)。
  -follow 假如f i n d命令碰到符號(hào)鏈接文件,就跟蹤至鏈接所指向的文件。
  -cpio 對(duì)匹配的文件使用c p i o命令,將這些文件備份到磁帶設(shè)備中。
  使用name選項(xiàng)
  文件名選項(xiàng)是f i n d命令最常用的選項(xiàng),要么單獨(dú)使用該選項(xiàng),要么和其他選項(xiàng)一起使用。
  可以使用某種文件名模式來(lái)匹配文件,記住要用引號(hào)將文件名模式引起來(lái)。
  不管當(dāng)前路徑是什么,假如想要在自己的根目錄$ H O M E中查找文件名符合* . t x t的文件,使用~作為' p a t h n a m e參數(shù),波浪號(hào)~代表了你的$ H O M E目錄。
  $ find ~ -name "*.txt" -print
  想要在當(dāng)前目錄及子目錄中查找所有的' * . t x t'文件,可以用:
  $ find . -name "*.txt" -print
  想要的當(dāng)前目錄及子目錄中查找文件名以一個(gè)大寫(xiě)字母開(kāi)頭的文件,可以用:
  $ find . -name "[A-Z]*" -print
  想要在/ e t c目錄中查找文件名以h o s t開(kāi)頭的文件,可以用:
  $ find /etc -name "host*" -print
  想要查找$ H O M E目錄中的文件,可以用:
  $ find ~ -name "*" -print 或find . -print
  要想讓系統(tǒng)高負(fù)荷運(yùn)行,就從根目錄開(kāi)始查找所有的文件。假如希望在系統(tǒng)治理員那里保留一個(gè)好印象的話(huà),最好在這么做之前考慮清楚!
  $ find / -name "*" -print
  假如想在當(dāng)前目錄查找文件名以?xún)蓚€(gè)小寫(xiě)字母開(kāi)頭,跟著是兩個(gè)數(shù)字,最后是* . t x t的文件,下面的命令就能夠返回名為a x 3 7 . t x t的文件:
  $ find . -name "[a-z][a-z][0--9][0--9].txt" -print
  使用perm選項(xiàng)
  假如希望按照文件權(quán)限模式來(lái)查找文件的話(huà),可以采用- p e r m選項(xiàng)。
你可能需要找到所有用戶(hù)都具有執(zhí)行權(quán)限的文件,或是希望查看某個(gè)用戶(hù)目錄下的文件權(quán)限類(lèi)型。在使用這一選項(xiàng)的時(shí)候,最好使用八進(jìn)制的權(quán)限表示法。
  為了在當(dāng)前目錄下查找文件權(quán)限位為7 5 5的文件,即文件屬主可以讀、寫(xiě)、執(zhí)行,其他用戶(hù)可以讀、執(zhí)行的文件,可以用:
  $ find . -perm 755 -print
  假如希望在當(dāng)前目錄下查找所有用戶(hù)都可讀、寫(xiě)、執(zhí)行的文件(要小心這種情況),我們可以使用f i n d命令的- p e r m選項(xiàng)。在八進(jìn)制數(shù)字前面要加一個(gè)橫杠-。在下面的命令中- p e r m代表按照文件權(quán)限查找,而' 0 0 7'和你在c h m o d命令的絕對(duì)模式中所采用的表示法完全相同。
  $ find . -perm -007 -print
  忽略某個(gè)目錄
  假如在查找文件時(shí)希望忽略某個(gè)目錄,因?yàn)槟阒滥莻€(gè)目錄中沒(méi)有你所要查找的文件,那么可以使用- p r u n e選項(xiàng)來(lái)指出需要忽略的目錄。在使用- p r u n e選項(xiàng)時(shí)要當(dāng)心,因?yàn)榧偃缒阃瑫r(shí)使用了- d e p t h選項(xiàng),那么- p r u n e選項(xiàng)就會(huì)被f i n d命令忽略。
  假如希望在/ a p p s目錄下查找文件,但不希望在/ a p p s / b i n目錄下查找,可以用:
  $ find /apps -name "/apps/bin" -prune -o -print
  2.1.4 使用user和nouser選項(xiàng)
  假如希望按照文件屬主查找文件,可以給出相應(yīng)的用戶(hù)名。例如,在$ H O M E目錄中查找文件屬主為d a v e的文件,可以用:
  $ find ~ -user dave -print
  在/ e t c目錄下查找文件屬主為u u c p的文件:
  $ find /etc -user uUCp -print
  為了查找屬主帳戶(hù)已經(jīng)被刪除的文件,可以使用- n o u s e r選項(xiàng)。這樣就能夠找到那些屬主
  在/ e t c / p a s s w d文件中沒(méi)有有效帳戶(hù)的文件。在使用- n o u s e r選項(xiàng)時(shí),不必給出用戶(hù)名; f i n d命令
  能夠?yàn)槟阃瓿上鄳?yīng)的工作。例如,希望在/ h o m e目錄下查找所有的這類(lèi)文件,可以用:
  $ find /home -nouser -print
  使用group和nogroup選項(xiàng)
  就像u s e r和n o u s e r選項(xiàng)一樣,針對(duì)文件所屬于的用戶(hù)組, f i n d命令也具有同樣的選項(xiàng),為
  了在/ a p p s目錄下查找屬于a c c t s用戶(hù)組的文件,可以用:
  $ find /apps -group accts -print
  要查找沒(méi)有有效所屬用戶(hù)組的所有文件,可以使用n o g r o u p選項(xiàng)。下面的f i n d命令從文件
  系統(tǒng)的根目錄處查找這樣的文件
  $ fine/-nogroup-print
  按照更改時(shí)間查找文件
  假如希望按照更改時(shí)間來(lái)查找文件,可以使用m t i m e選項(xiàng)。假如系統(tǒng)忽然沒(méi)有可用空間了,很有可能某一個(gè)文件的長(zhǎng)度在此期間增長(zhǎng)迅速,這時(shí)就可以用m t i m e選項(xiàng)來(lái)查找這樣的文件。
  用減號(hào)-來(lái)限定更改時(shí)間在距今n日以?xún)?nèi)的文件,而用加號(hào)+來(lái)限定更改時(shí)間在距今n日以前的文件。
  希望在系統(tǒng)根目錄下查找更改時(shí)間在5日以?xún)?nèi)的文件,可以用:
  $ find / -mtime -5 -print
  為了在/ v a r / a d m目錄下查找更改時(shí)間在3日以前的文件,可以用:
  $ find /var/adm -mtime +3 -print
  查找比某個(gè)文件新或舊的文件
  假如希望查找更改時(shí)間比某個(gè)文件新但比另一個(gè)文件舊的所有文件,可以使用- n e w e r選
  項(xiàng)。它的一般形式為:
  newest_file_name ! oldest_file_name
  其中,!是邏輯非符號(hào)。
  這里有兩個(gè)文件,它們的更改時(shí)間大約相差兩天。
  下面給出的f i n d命令能夠查找更改時(shí)間比文件a g e . a w k新但比文件b e l t s . a w k舊的文件:
  假如想使用f i n d命令的這一選項(xiàng)來(lái)查找更改時(shí)間在兩個(gè)小時(shí)以?xún)?nèi)的文件,除非有一個(gè)現(xiàn)成的文件其更改時(shí)間恰好在兩個(gè)小時(shí)以前,否則就沒(méi)有可用來(lái)比較更改時(shí)間的文件。為了解決這一問(wèn)題,可以首先創(chuàng)建一個(gè)文件并將其日期和時(shí)間戳設(shè)置為所需要的時(shí)間。這可以用t o u c h 命令來(lái)實(shí)現(xiàn)。
  假設(shè)現(xiàn)在的時(shí)間是2 3 : 4 0,希望查找更改時(shí)間在兩個(gè)小時(shí)以?xún)?nèi)的文件,可以首先創(chuàng)建這樣一個(gè)文件:
  一個(gè)符合要求的文件已經(jīng)被創(chuàng)建;這里我們假設(shè)今天是五月四日,而該文件的更改時(shí)間是2 1 : 4 0,比現(xiàn)在剛好早兩個(gè)小時(shí)。
  現(xiàn)在我們就可以使用f i n d命令的- n e w e r選項(xiàng)在當(dāng)前目錄下查找所有更改時(shí)間在兩個(gè)小時(shí)以?xún)?nèi)的文件:
  $ find . -newer dstamp -print
  使用type選項(xiàng)U N I X或L I N U X系統(tǒng)中有若干種不同的文件類(lèi)型,這部分內(nèi)容我們?cè)谇懊娴恼鹿?jié)已經(jīng)做了介紹,這里就不再贅述。假如要在/ e t c目錄下查找所有的目錄,

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐至县| 综艺| 甘肃省| 民县| 彭水| 织金县| 融水| 灵武市| 孝感市| 泽普县| 连州市| 乌什县| 钦州市| 盐亭县| 广安市| 鹤山市| 万州区| 霞浦县| 武义县| 栾城县| 纳雍县| 吐鲁番市| 灵武市| 明溪县| 攀枝花市| 宜丰县| 阳西县| 元朗区| 温州市| 海兴县| 江西省| 烟台市| 九江县| 贵溪市| 玛沁县| 淮滨县| 三原县| 鄂托克旗| 平乐县| 崇信县| 星座|