close

rm、cp、mv是unix下面常用到的檔案處理指令,譬如我們需要移除不必要的檔案通常會使用rm xxx來刪除,如果檔案數目眾多且命名具有規則,eg. file1.log、file2.log、file3.log等,為求方便則會利用萬用字元來處理,eg. rm -f *.log,但是當這些指令後面所處理檔案數量多到某種程度時,就會出現/bin/rm: Argument list too long這個錯誤訊息。

往往在我們執行一些程式時,系統會產生大量的log或者是不必要的暫存檔(有時候是程式出錯的悲劇@@),但是如果在刪除時遇到這種錯誤,往往會很嘔,這表示又要寫一些code來處理這些garbage,所以在網路上面查了一下,目前最常看到的解決方法是用xargs來處理,方式如下:
find . -name '*.log' | xargs rm

另外,在對岸的同胞上的網誌上面也看到不用xargs的解法:
find /var/spool/mqueue -type f -exec rm {} \;

/var/spool/mqueue是要刪除檔案的存放資料夾,type -f指的是一般檔案,{}的後方可以接其他參數,所以如果指令後方要加入多個參數的話,例如copy 檔案 到B資料夾的時候,就可以透過以下指令來做:

find /var/spool/mqueue -type f -exec cp {} ../backup \;

arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(1) 人氣()