Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux xargs 指令實戰大全:解決 find -exec 參數過長、並行處理、返回碼判斷與常用組合技

編輯:關於 Linux

xargs 將標準輸入轉為命令列參數,分批執行,完美解決 find -exec 參數列表過長、進程過多問題。本文詳細說明 xargs 核心參數、返回碼對照表、與 find、grep、awk 組合的 8 大實戰場景。

xargs 流程圖

核心參數


-n N     每次最多傳遞 N 個參數
-P N     並行執行 N 個進程 (GNU xargs)
-0       以 null 字元分隔 (配合 find -print0)
-I {}    佔位符,支援多次引用
-t       顯示即將執行的命令
-p       互動確認每次執行
-r       無輸入時不執行命令
-s N     最大命令列長度 (預設 131072)

返回碼對照表

碼含義
0成功
123任一子命令返回 1-125
124子命令返回 255
125子命令被訊號殺死
126子命令無法執行 (權限/不存在)
127子命令未找到
1其他錯誤
>128Shell 致命訊號 (128+signo)

8 大實戰組合技

  1. 大量檔案刪除:find /var/log -name "*.log" -mtime +30 -print0 | xargs -0 -r rm -f
  2. 並行壓縮:find . -name "*.csv" -print0 | xargs -0 -P 4 -n 1 gzip
  3. 批次重命名:ls *.JPG | xargs -I {} mv {} {}.jpg
  4. 關鍵字跨檔搜尋:grep -rl "TODO" src/ | xargs -r sed -i 's/TODO/FIXME/g'
  5. 殺死特定使用者進程:ps -u www -o pid= | xargs -r kill -9
  6. 統計程式碼行數:find . -name "*.go" -print0 | xargs -0 wc -l
  7. 建立目錄樹:cat dirs.txt | xargs -r mkdir -p
  8. 轉換編碼:find . -name "*.txt" -print0 | xargs -0 -I {} iconv -f GBK -t UTF-8 {} -o {}.utf8

find -exec vs xargs 效能對比

指標find -exec cmd {} +find ... | xargs cmd
參數長度限制核心自動分批xargs 內部分批
進程數單一進程單一進程 (或 -P 並行)
錯誤處理較難捕捉可檢查 xargs 返回碼
可讀性較直觀管線風格更 Unix

掌握 xargs 即擁有「Unix 管線瑞士刀」,批次處理百萬級檔案亦游刃有餘。

Copyright © Windows教程網 All Rights Reserved