我有這段程式碼來搜尋目前資料夾中的目錄,然後將其壓縮
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
標誌將啟動的平行進程數限制為xargs
5 個,而-n 1
用於一次僅使用一個輸入行執行公用程式。我們-I XX
說輸入行(將是目錄路徑)應該替換XX
命令中的字串。
xargs
tar
將會列印出執行這些呼叫時的呼叫。刪除-t
即可將其關閉。
find
目錄路徑名從with傳遞-print0
並由xargs
with接收-0
(即用作\0
分隔符號),以允許可能的外來名稱。
正如所指出的在本網站其他地方的答案中:
請注意,操作的瓶頸可能是硬碟。因此,即使您確實將任務拆分為兩個或多個進程,它也不會運行得更快,除非它們在不同的驅動器上運行。