[已解決]Argument list too long如何處理?


Argument list too long 本質是需要處理的長度超過系統的長度,因此無法執行相關命令。
經過搜索發現了兩種方法,思想都是將參數切分成小的段落進行執行。
法一:通過xargs傳遞參數 (數據量大了還是不太奏效)

find . -name "*.log" | xargs -0 rm

ls | xargs -t -I {} mv {} ../matchres/ 可以把當前目錄下的所有文件移到 "../matchres"下

ls | head -n 50 |xargs -t -I {} mv {} ../ 可以把當前目錄中的前50個移動到上級目錄


合並201301目錄文件到 hbtmp/bill201301.txt
cd 201301/
ls | xargs -t -I {} cat {} >> ../hbtmp/bill201301.txt

xargs使用的命令一次會被調用2000〜4000次左右,因此,如果列出的日志有一萬筆的話,可能就會被分成3到5次左右來執行,因而避開了。

find -maxdepth 1 -type f \( -exec grep -q '^- ' {} \; -o -print \)
  • maxdepth 深度
  • type 文件類型

法二:shell腳本循環執行rm命令

#!/bin/bash
# 設定需要刪除的文件夾
RM_DIR='/var/spool/clientmqueue'
cd $RM_DIR
for I in `ls`
do
  rm -f $I
done

一行表達式:

for f in *.pdf; do rm "$f"; done

法三:將文件群手動划分為比較小的組合

mv [a-l]* ../foo2
mv [m-z]* ../foo2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM