Command-Line

對匹配模式的多個文件並行執行命令

  • February 25, 2016

假設我有一個接受單個參數的命令,該參數是文件路徑:

mycommand myfile.txt

現在我想在多個文件上並行執行這個命令,更具體地說,文件匹配模式myfile*

有沒有簡單的方法來實現這一目標?

使用 GNUxargs和支持程序替換的 shell

xargs -r -0 -P4 -n1 -a <(printf '%s\0' myfile*) mycommand

最多可並行執行 4mycommand秒。

如果mycommand不使用它的標準輸入,你也可以這樣做:

printf '%s\0' myfile* | xargs -r -0 -P4 -n1 mycommand

這也適用於xargs現代 BSD。

對於myfile*文件的遞歸搜尋,將printf命令替換為:

find . -name 'myfile*' -type f -print0

(-type f僅適用於正常文件。對於 glob 等效項,您需要zsh及其printf '%s\0' myfile*(.))。

引用自:https://unix.stackexchange.com/questions/265703