並行批次使用 find 指令中的文件

並行批次使用 find 指令中的文件

我有這段程式碼來搜尋目前資料夾中的目錄,然後將其壓縮

find . -type d -maxdepth 1 -mindepth 1 -print -exec tar czf {}.tar.gz {} \;

我有數百個資料夾,目前它是一個一個的資料夾。

我是否可以並行運行 5 個批次

答案1

使用xargs你可以實現一定程度的並行性:

find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX

-P 5標誌將啟動的平行進程數限制為xargs5 個,而-n 1用於一次僅使用一個輸入行執行公用程式。我們-I XX說輸入行(將是目錄路徑)應該替換XX命令中的字串。

xargstar將會列印出執行這些呼叫時的呼叫。刪除-t即可將其關閉。

find目錄路徑名從with傳遞-print0並由xargswith接收-0(即用作\0分隔符號),以允許可能的外來名稱。


正如所指出的在本網站其他地方的答案中:

請注意,操作的瓶頸可能是硬碟。因此,即使您確實將任務拆分為兩個或多個進程,它也不會運行得更快,除非它們在不同的驅動器上運行。

相關內容