Command-Line
對匹配模式的多個文件並行執行命令
假設我有一個接受單個參數的命令,該參數是文件路徑:
mycommand myfile.txt
現在我想在多個文件上並行執行這個命令,更具體地說,文件匹配模式
myfile*
。有沒有簡單的方法來實現這一目標?
使用 GNU
xargs
和支持程序替換的 shellxargs -r -0 -P4 -n1 -a <(printf '%s\0' myfile*) mycommand
最多可並行執行 4
mycommand
秒。如果
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*(.)
)。