一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊(cè)表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務(wù)器之家 - 服務(wù)器系統(tǒng) - Linux - Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

2019-12-21 17:44Linux教程網(wǎng) Linux

使用 find 可以查找出符合某一特性(如權(quán)限、屬主、長(zhǎng)度、類型、名字等)的文件或目錄,結(jié)合 -exec、-ok 和 -xargs,可以完成更多的工作

1.使用find可以查找出符合某一特性(如權(quán)限、屬主、長(zhǎng)度、類型、名字等)的文件或目錄,結(jié)合-exec、-ok和-xargs,可以完成更多的工作。

2.find的name選項(xiàng):

根據(jù)文件名字匹配查找,如在自己的根目錄下查找符合*.txt的文件:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

擴(kuò)展:find/!-name"myshell"-print

(

從上面的輸出可以看出,對(duì)于root用戶而言:

~

$home

/root

代表的都是同一個(gè)目錄,就是/root。

特別的,對(duì)于用戶xxx而言,$home和~代表的就是/xxx目錄,這個(gè)目錄的位置(以zhy用戶為例),如下:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

可以看到,/zhy是在/home下。對(duì)于非管理員用戶,/xxx目錄都是在/home下,而root用戶的/root目錄位置如下:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

是直接位于根目錄下的(管理員是老大嘛,當(dāng)然優(yōu)待咯)。

)

在當(dāng)前目錄下查找,就用“.“:

#find.-name"*.txt"-print

該命令會(huì)查找當(dāng)前目錄及子目錄下滿足條件的文件。

在當(dāng)前目錄中查找大寫(xiě)字母開(kāi)頭的文件:

#find.-name"[a-z]*"-print

注意后面有個(gè)*

在/etc中查找以"host"開(kāi)頭的文件:

#find/etc-name"host*"-print

在$home下查找所有文件:

#find~-name"*"-print

#find~-print

如果想讓系統(tǒng)高負(fù)荷運(yùn)轉(zhuǎn),就用從根目錄查找:

#find/-name"*"-print(#find/-print)

對(duì)這個(gè)命令稍加修改:

#find/-name"*"-print&

就可以讓它在后臺(tái)運(yùn)行了,這個(gè)時(shí)候,通過(guò)ctrl+c,也不能中斷它的執(zhí)行了。。。

查找文件以兩個(gè)小寫(xiě)字母開(kāi)頭,跟著是兩個(gè)數(shù)字的.txt文件,可以用:

#find/-name"[a-z][a-z][0-9][0-9].txt"-print

3.find的perm選項(xiàng):

按照文件權(quán)限來(lái)查找文件。

查找文件屬主可以讀、寫(xiě)、執(zhí)行,其他用戶可以讀、執(zhí)行的文件:

#find.-perm755-print

如:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

擴(kuò)展:find.!-perm755-print

4.find的prune選項(xiàng):

查找文件時(shí),忽略某個(gè)目錄,如:

如果希望在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找,可以用:

#find/apps-name"/apps/bin"-prune-o-print

5.user和nouser選項(xiàng):

user:根據(jù)文件的屬主查找文件:

#find.-userzhy-print

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

在linux下,可能有些屬主,可能被管理員刪掉了,這個(gè)時(shí)候,就能用-nouser選項(xiàng)找到那些在屬主在/etc/passwd文件中沒(méi)有有效賬戶的文件。在用-nouser時(shí),不用給出用戶名。

#find/-nouser-print

6.使用group和nogroup:

就像使用user和nouser一樣,group與nogroup選項(xiàng)能找出屬于某一用戶組的文件,和用戶組已經(jīng)不存在的文件。

#find/-groupzhy-print

#find/-nogroup-print

7.使用-mtime選項(xiàng):

該選項(xiàng)可以查找指定時(shí)間內(nèi)或指定時(shí)間外修改的文件,如果系統(tǒng)突然沒(méi)有可用空間了,很有可能某一個(gè)文件的長(zhǎng)度在此期間增長(zhǎng)迅速,這時(shí)就可以用mtime選項(xiàng)來(lái)查找這樣的文件:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

-1表示1日(24小時(shí))之內(nèi)更改過(guò)的文件。

+2表示2日(48小時(shí))之前更改過(guò)的文件。

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

8.newer選項(xiàng):

newer命令能讓我們找出更改時(shí)間介于兩個(gè)文件之間的文件,如有下面兩個(gè)文件,它們更改時(shí)間相差大概兩天:

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

通過(guò)下面的命令,我們就可以找出更改時(shí)間介于這兩者的文件了:

#find/-newerage.awk!-newerbelts.awk-execls-l{}\;

從上面可以看出,這種比較必須有參考的文件,比如要查找更改時(shí)間在兩個(gè)小時(shí)以內(nèi)的文件,就必須有一個(gè)更改時(shí)間正好在兩個(gè)小時(shí)之前那個(gè)時(shí)刻的文件可以供參考。這里我們可以通過(guò)touch來(lái)創(chuàng)建一個(gè)指定更改時(shí)間的文件:

假如現(xiàn)在是12月26日10點(diǎn)41分,那就需要?jiǎng)?chuàng)建一個(gè)更改時(shí)間在12月26日08點(diǎn)41分的文件:

#touch-t12260841oldfile

然后通過(guò):

#find/-neweroldfile-print

來(lái)查找更改時(shí)間在兩個(gè)小時(shí)內(nèi)的文件。

9.用type查找指定類型的文件:

在根目錄下,查找所有的目錄:

#find/-typed-print

查找除目錄以外所有類型的文件:

#find/!-typed-print

查找所有符號(hào)鏈接文件:

#find/-typel-print

查找所有普通文件:

#find/-typef-print

10.使用size選項(xiàng):

使用可以查找指定長(zhǎng)度的文件,可以以字節(jié)為單位,也可以用塊為單位,1塊=512字節(jié)(0.5m)。

以字節(jié)為單位,需要在數(shù)字后面加c,如:

在根目錄下查找文件長(zhǎng)度大于1m的文件:

#find/-size+1000000c-print

用塊表示就是:

#find/-size+2-print

查找剛好是100字節(jié)的文件:

#find/-size100c-print

查找小于100字節(jié)的文件:

#find/-size-100c-print

11.使用depth選項(xiàng):

查找時(shí)使用depth命令,可以先在指定文件的根目錄下查找所有文件,再進(jìn)入子目錄中查找,有時(shí)備份可能需要這樣做。

如:從根目錄開(kāi)始,查找名為"con.file"的文件,它將首先匹配所有的文件然后再進(jìn)入子目錄查找:

#find/-name"con.file"-depth-print

12.使用mount選項(xiàng):

查找文件時(shí),可以只在指定目下查找,而不進(jìn)入子目錄下查找,這可以通過(guò)mount指定。

如:

#find.-name"*.xc"-mount-print

13.使用cpio選項(xiàng):

cpio選項(xiàng)可以用來(lái)向磁帶設(shè)備備份文件或從中恢復(fù)文件。結(jié)合find,可以在整個(gè)文件系統(tǒng)中查找文件,然后用cpio命令將其備份到磁帶上。

下面的命令:

#cd/

#findetchomeapps-depth-print|cpio-ivcdc65535-o\

/dev/rmt0

\用來(lái)告訴系統(tǒng),shell命令還沒(méi)有結(jié)束,請(qǐng)忽略\后面的回車(chē)。該命令用來(lái)將/etc、/home和/apps目錄下的文件備份到設(shè)備/dev/rmt0中。

上面命令中etc、home、apps前都沒(méi)有/,這是用了相對(duì)路徑(用了/就是絕對(duì)路徑),之所以用相對(duì)路徑,是因?yàn)椋?/p>

在從磁帶中恢復(fù)這些文件的時(shí)候,可以選擇恢復(fù)文件的路徑。例如,可以將這些文件先恢復(fù)到另外一個(gè)目錄中,對(duì)它們進(jìn)行某些操作后,再恢復(fù)到原始目錄中。如果在備份時(shí)使用了絕對(duì)路徑,例如/etc,那么在恢復(fù)時(shí),就只能恢復(fù)到/etc目錄中去,別無(wú)其他選擇。

上面的命令,告訴find命令首先進(jìn)入/etc目錄,然后是/home和/apps目錄,先匹配這些目錄下的文件,然后再匹配其子目錄中的文件,所有這些結(jié)果將通過(guò)管道傳遞給cpio命令進(jìn)行備份。

順便說(shuō)一下,在上面的例子中cpio命令使用了c65536選項(xiàng),我本可以使用b選項(xiàng),不過(guò)這樣每塊的大小只有512字節(jié),而使用了c65536選項(xiàng)后,塊的大小變成了64k字節(jié)(65536/1024)。

14.使用exec或ok選項(xiàng):

用find匹配到一些文件之后,可以用exec和ok選項(xiàng)來(lái)對(duì)其進(jìn)行某些操作。

用exec和ok的格式是:exec(ok)選項(xiàng)后面跟隨著所要執(zhí)行的命令,然后是一對(duì)兒{},一個(gè)空格和一個(gè)\,最后是一個(gè)分號(hào)。

如:

#find.-typef-execls-l{}\;

該命令查找并列出匹配到的文件。

#findlogs-typef-mtime+5-execrm{}\;

該命令查找更改時(shí)間在5天以前的普通文件,并刪除它們。

exec的安全模式:ok

#find.-name"*.log"-mtime+5-okrm{}\;

該命令和用exec的唯一區(qū)別就是該命令在刪除時(shí),會(huì)給出提示。

#find/etc-name"passwd*"-execgrep"zhy"{}\;

Linux命令(shell)從入門(mén)到精通 學(xué)習(xí)筆記之2 使用find和xargs

該命令首先匹配所有名為"passwd*"的文件,如:passwd、pssswd.old、passwd.bak,然后執(zhí)行g(shù)rep命令查看在這些命令中是否存在zhy用戶。

find的其他例子:

#find~-print(find$home-print)

查找所有文件

#find.-typef-perm4755-print

查找suid置位,文件屬主具有讀、寫(xiě)、執(zhí)行權(quán)限,其他用戶具有讀和執(zhí)行權(quán)限的文件。

#find/-groupzhy-print

查找屬主是zhy的文件。

#$find/logs-name'admin.log[0-9][0-9][0-9]'-mtime+7-execrm{}\;

查找具有指定名稱的,修改日期在7天以前的文件,并刪除。

#find/dev/rmt-print

查找系統(tǒng)中所有的rmt磁帶設(shè)備。

15.使用xargs選項(xiàng):

為什么使用xargs:

在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí),find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。不幸的是,有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn)溢出錯(cuò)誤。錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。在有些系統(tǒng)中,使用-exec選項(xiàng)會(huì)為處理每一個(gè)匹配到的文件而發(fā)起一個(gè)相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會(huì)出現(xiàn)進(jìn)程過(guò)多,系統(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)確定。

例:

#find/-typef-print|xargsfile|tee/root/shell/xargs.log

查找系統(tǒng)中的每一個(gè)普通文件,然后使用xargs命令來(lái)測(cè)試它們分別屬于哪類文件,并將輸出導(dǎo)入到xargs.log文件中。用-exec試下,就是:

#find/-typef-print-execfile{}\;|tee/root/shell/exec.log

通過(guò)對(duì)比xargs.log和exec.log,發(fā)現(xiàn)二者的輸出,確實(shí)一樣,但執(zhí)行xargs命令的效率明顯比-exec快很多(從執(zhí)行速度上看)。

#find/apps/audit-perm777-print|xargschmodo-w

在/apps/audit目錄下查找所有用戶具有讀、寫(xiě)和執(zhí)行權(quán)限的文件,并收回其他用戶的寫(xiě)權(quán)限。

#find/-typef-print|xargsgrep"device"

用grep命令在所有的普通文件中搜索device這個(gè)詞:

#find.-name\*-typef-print|xargsgrep"192.168.5.29"

該命令在當(dāng)前目錄下的所有普通文件中搜索192.168.5.29這個(gè)詞,\用來(lái)取消find命令中的*在shell中的特殊含義。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜精品久久久久 | 国产清纯女高中生在线观看 | 亚洲国产精品无码中文字幕 | 91国产在线播放 | 日韩一区二区不卡 | 九九热视频免费观看 | 午夜一级免费视频 | 日韩性事 | 精品国产国产精2020久久日 | 日本xxxxxl1820| 成人伊人亚洲人综合网站222 | 国产18在线 | 亚洲色图首页 | 窝窝午夜精品一区二区 | 国产精品美女久久久久 | 九九热精品免费观看 | 日韩欧美高清视频 | 歪歪视频在线播放无遮挡 | 青青草在观免费 | 91大神在线精品视频一区 | 亚洲国产精品婷婷久久久久 | 午夜伦伦电影理论片大片 | 毛片免 | 饭冈加奈子黑人解禁在线播放 | 日本黄a三级三级三级 | 亚洲成人黄色网址 | 好湿好滑好硬好爽好深视频 | 麻豆资源 | 国产白白视频在线观看2 | 国产亚洲女在线精品 | yy6080午夜国产免费福利 | 亚洲一区二区三区免费视频 | 欧美精品一区二区在线观看 | 亚洲欧美日韩另类在线一 | bb18lv黑料正能量 | 亚洲国产成人精品无码区99 | 男人天堂久久 | 513热点网深夜影院影院诶 | 97久久久亚洲综合久久88 | ferr孕妇videos毛茸茸 | 国产免费一区二区三区免费视频 |