溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux下find與exec如何結(jié)合使用

發(fā)布時(shí)間:2021-10-27 10:53:57 來(lái)源:億速云 閱讀:453 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“Linux下find與exec如何結(jié)合使用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux下find與exec如何結(jié)合使用”這篇文章吧。

在Linux下工作,find命令絕對(duì)是一個(gè)非常高頻的命令。我們可以用find命令來(lái)找到符合某些關(guān)鍵詞的文件,找到某些日期的文件,也可以設(shè)定一些正則表達(dá)式,找到一系列滿足該條件的文件。

但是,如果只有一個(gè)find命令的話,我們僅能將文件找出來(lái),列在終端里。僅一個(gè)find命令還不足以再做進(jìn)一步的操作。比如說(shuō),我們想把項(xiàng)目文件夾里的中間文件(*.o文件)找出來(lái),再把它們?nèi)縿h除;再如,我們想把日志文件夾下3天以上的日志全部轉(zhuǎn)移到指定文件夾下;等等諸如此類(lèi)的需求,還有非常多。

像這樣的,我們想用find命令找到相關(guān)文件,再作進(jìn)一步操作,該如何進(jìn)行呢?這時(shí)候exec命令就派上用場(chǎng)。

我們先來(lái)看看exec的基本用法。

-exec參數(shù)后面跟的就是我們想進(jìn)一步操作的命令,比如rm,mv等等。exec是以分號(hào)";"作為結(jié)束標(biāo)識(shí)符的,考慮到各個(gè)系統(tǒng)平臺(tái)對(duì)分號(hào)的不同解釋?zhuān)覀冊(cè)诜痔?hào)前再加個(gè)反斜杠,便于移植。而在分號(hào)前,通常也會(huì)有一對(duì)花括號(hào){},代表前面find命令查找出來(lái)的文件各。

我們直接通過(guò)幾個(gè)實(shí)例來(lái)講解find與exec聯(lián)合用法。為了演示的方便,我們假定有如下的一個(gè)項(xiàng)目文件夾:

Linux下find與exec如何結(jié)合使用

實(shí)例1:使用find命令查找相關(guān)文件后,再使用ls命令將它們的詳細(xì)信息列出來(lái)

我們現(xiàn)在想把當(dāng)前目錄下所有的.o文件全部找出來(lái),并用 ls -l 命令將它們列出來(lái)。實(shí)現(xiàn)這個(gè)需求的命令如下:

find . -name "*.o" -type f -exec ls -l {} \;

結(jié)果如下:

Linux下find與exec如何結(jié)合使用

在這里,我們用find 命令匹配到了當(dāng)前目錄下的所有.o文件,并在 -exec 選項(xiàng)中使用 ls -l 命令將它們的詳細(xì)信息列出來(lái)。

實(shí)例2:使用find命令查找相關(guān)文件后,再使用rm命令將它們刪除

我們現(xiàn)在想把當(dāng)前目錄下所有的.o文件全部找出來(lái),并用rm命令將它們刪除。實(shí)現(xiàn)這個(gè)需求的命令如下:

find . -name "*.o" -exec rm {} \;

執(zhí)行完這個(gè)命令后,該目錄下所有的.o文件都被刪除。由于這個(gè)動(dòng)作完成后也不會(huì)有任何提示,所以就沒(méi)有截圖的必要了。

實(shí)例3:使用-exec選項(xiàng)的安全模式,將對(duì)每個(gè)匹配到的文件進(jìn)行操作之前提示用戶

在實(shí)例2中,我們匹配到文件后就立刻執(zhí)行rm命令,這樣操作有些危險(xiǎn),因?yàn)槿绻坏┱`操作,有可能會(huì)引起災(zāi)難性的后果。

exec的安全模式就是為了避免這個(gè)問(wèn)題而產(chǎn)生。它會(huì)在匹配到某個(gè)文件后,在進(jìn)行操作之前會(huì)先問(wèn)一下你,經(jīng)過(guò)你的確認(rèn)它才會(huì)進(jìn)行相應(yīng)操作。

同樣的實(shí)例2的需求,如果采用安全模式的話,命令是這樣的:

find . -name "*.o" -ok rm {} \;

執(zhí)行結(jié)果如下:

Linux下find與exec如何結(jié)合使用

實(shí)例4:搜索匹配到的文件中的關(guān)鍵內(nèi)容

假如我現(xiàn)在有個(gè)很大型的項(xiàng)目(如Linux內(nèi)核),我想在里面搜索一個(gè)含有某關(guān)鍵字的文件。我們可以使用grep命令檢索所有的文件。這樣做肯定是可以的,但如果項(xiàng)目很大的話,這樣太耗時(shí)了,效率太低。

我們可以先用find命令找到所以相關(guān)文件,然后再用grep命令檢索那些文件即可。因?yàn)橐呀?jīng)使用find過(guò)濾一遍了,所以這樣操作會(huì)節(jié)約很多時(shí)間,提高效率。

命令如下:

find . -name "*.h" -exec grep -rns "hello" {} \;

結(jié)果如下:

Linux下find與exec如何結(jié)合使用

實(shí)例5:查找文件并移動(dòng)到指定目錄

這個(gè)需求就比較簡(jiǎn)單了。比如我現(xiàn)在想把所有的.o文件找出來(lái),然后新他們mv到buil目錄。命令如

下:

find . -name "*.o" -exec cp {} build \;

結(jié)果如下:

Linux下find與exec如何結(jié)合使用

以上是“Linux下find與exec如何結(jié)合使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI