-exec rm 与 xargs rm -rf 深度剖析
目錄
前言
正文
相同點
不同點
-exec rm
xargs rm -rf
前言
我們在 linux 機器上刪除搜索到的文件和目錄時,總會遇到這樣的抉擇:對于?-exec rm -rf 和?xargs rm -rf 兩個命令,應該用哪個呢?而且網上很多文章簡直不負責任,有的甚至把二者的區別寫反了。今天這篇文章就算撥亂反正啦。
正文
相同點
二者都可以刪除指定的目錄或者文件,而且都是強制刪除。
不同點
二者在具體的執行策略上有所不同,下面詳細介紹。
-exec rm
exec 命令用來調用并執行指定的其他命令。但是,我們比較推薦在 shell 腳本程序中使用 exec 命令,調用其他的命令。因為如果在當前終端中使用該命令,則當指定的命令執行結束后會立即退出終端。(友情提示:大家動手嘗試時千萬要注意呦)
示例命令:
exec ls?
如果你想嘗試 exec 命令的這個特性,可以新打開一個終端,然后復制上面的命令,看一看效果!
最后,提醒大家需要注意的是 exec 命令必須由一個 ; 結束,因為?shell 一般會對 ; 進行解析,所以借用轉義字符 \; 防止這種情況發生。另外,上面的命令不能直接執行目錄和文件,完整的命令如下:
exec rm?{} \;
其中,{} 用來接受其他命令傳入的參數集合,比如搜索當前目錄下所有的日志文件并刪除,命令如下:
find ./ -name "*.log" ?-exec rm {} \;
注意:和其他命令一起使用時,前邊需要加鏈接符 - ,但是使用時不需要。?
xargs rm -rf
xargs 命令的作用是給別的命令傳遞參數,一般會配合管道符 | 來使用,把前一命令的 stdout 輸出作為自己的 stdin 輸入,再轉換成 command line 形式的參數傳給其它命令。
相比較 exec 單次執行所有參數集合,xargs 命令會將最終的命令轉換成單獨的命令再執行,從而在一定程度上避免“參數太多”類似的錯誤。因此,在進行大量文件和目錄刪除操作時,比較推薦使用 xargs 命令。
好了,為了更加形象的對比二者在使用時的區別,現在使用 xargs 命令搜索并刪除當前目錄下的所有日志文件,應該使用什么命令呢,具體命令如下:
find ./ -name "*.log" | xargs rm -rf
是不是更加簡單?至少個人是這么認為的,比較符合我們一般組合命令的使用習慣。?
下面簡單看一下 xargs 命令的其他用法,打印文件名字符串,具體效果如下圖所示:
作者簡介:😄大家好,我是 Data-Mining(liuzhen007),是一位音視頻技術愛好者,前后就職于傳統廣電巨頭和音視頻互聯網公司,具有豐富的音視頻直播和點播相關經驗,對 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公眾號:玩轉音視頻。同時也是 CSDN 博客專家、華為云社區云享專家、簽約作者,歡迎關注我分享更多干貨!😄
總結
以上是生活随笔為你收集整理的-exec rm 与 xargs rm -rf 深度剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 亚马逊爆款的流量密码原来这么简单 六个步
- 下一篇: ubuntu1804搭建git服务器
