您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux下find與exec如何結合使用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下find與exec如何結合使用”這篇文章吧。
在Linux下工作,find命令絕對是一個非常高頻的命令。我們可以用find命令來找到符合某些關鍵詞的文件,找到某些日期的文件,也可以設定一些正則表達式,找到一系列滿足該條件的文件。
但是,如果只有一個find命令的話,我們僅能將文件找出來,列在終端里。僅一個find命令還不足以再做進一步的操作。比如說,我們想把項目文件夾里的中間文件(*.o文件)找出來,再把它們全部刪除;再如,我們想把日志文件夾下3天以上的日志全部轉移到指定文件夾下;等等諸如此類的需求,還有非常多。
像這樣的,我們想用find命令找到相關文件,再作進一步操作,該如何進行呢?這時候exec命令就派上用場。
我們先來看看exec的基本用法。
-exec參數后面跟的就是我們想進一步操作的命令,比如rm,mv等等。exec是以分號";"作為結束標識符的,考慮到各個系統平臺對分號的不同解釋,我們在分號前再加個反斜杠,便于移植。而在分號前,通常也會有一對花括號{},代表前面find命令查找出來的文件各。
我們直接通過幾個實例來講解find與exec聯合用法。為了演示的方便,我們假定有如下的一個項目文件夾:
實例1:使用find命令查找相關文件后,再使用ls命令將它們的詳細信息列出來
我們現在想把當前目錄下所有的.o文件全部找出來,并用 ls -l 命令將它們列出來。實現這個需求的命令如下:
find . -name "*.o" -type f -exec ls -l {} \;
結果如下:
在這里,我們用find 命令匹配到了當前目錄下的所有.o文件,并在 -exec 選項中使用 ls -l 命令將它們的詳細信息列出來。
實例2:使用find命令查找相關文件后,再使用rm命令將它們刪除
我們現在想把當前目錄下所有的.o文件全部找出來,并用rm命令將它們刪除。實現這個需求的命令如下:
find . -name "*.o" -exec rm {} \;
執行完這個命令后,該目錄下所有的.o文件都被刪除。由于這個動作完成后也不會有任何提示,所以就沒有截圖的必要了。
實例3:使用-exec選項的安全模式,將對每個匹配到的文件進行操作之前提示用戶
在實例2中,我們匹配到文件后就立刻執行rm命令,這樣操作有些危險,因為如果一旦誤操作,有可能會引起災難性的后果。
exec的安全模式就是為了避免這個問題而產生。它會在匹配到某個文件后,在進行操作之前會先問一下你,經過你的確認它才會進行相應操作。
同樣的實例2的需求,如果采用安全模式的話,命令是這樣的:
find . -name "*.o" -ok rm {} \;
執行結果如下:
實例4:搜索匹配到的文件中的關鍵內容
假如我現在有個很大型的項目(如Linux內核),我想在里面搜索一個含有某關鍵字的文件。我們可以使用grep命令檢索所有的文件。這樣做肯定是可以的,但如果項目很大的話,這樣太耗時了,效率太低。
我們可以先用find命令找到所以相關文件,然后再用grep命令檢索那些文件即可。因為已經使用find過濾一遍了,所以這樣操作會節約很多時間,提高效率。
命令如下:
find . -name "*.h" -exec grep -rns "hello" {} \;
結果如下:
實例5:查找文件并移動到指定目錄
這個需求就比較簡單了。比如我現在想把所有的.o文件找出來,然后新他們mv到buil目錄。命令如
下:
find . -name "*.o" -exec cp {} build \;
結果如下:
以上是“Linux下find與exec如何結合使用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。