Utilice archivos del comando buscar en lotes paralelos

Utilice archivos del comando buscar en lotes paralelos

Tengo este código para buscar directorios en la carpeta actual y luego tarlo

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

Tengo cientos de carpetas y actualmente lo hace una por una.

¿Es posible que pueda ejecutar un lote de 5 en paralelo?

Respuesta1

Usando xargsusted puede lograr un grado de paralelismo:

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

Es la bandera que limita a cinco -P 5el número de procesos paralelos iniciados , mientras que se usa para ejecutar la utilidad solo con una línea de entrada a la vez. Con decimos que la línea de entrada, que será una ruta de directorio, debe sustituirse por la cadena en el comando.xargs-n 1-I XXXX

xargsimprimirá las invocaciones de tara medida que se realicen. Quitar -tpara desactivar esto.

Los nombres de ruta del directorio se pasan desde findy -print0se reciben xargscon -0(es decir, se usan \0como delimitador) para permitir nombres posiblemente exóticos.


Como se ha señaladoen una respuesta en otra parte de este sitio:

Tenga en cuenta que el cuello de botella de la operación probablemente sea el disco duro. Por esa razón, incluso si dividiera la tarea en dos o más procesos, no sería más rápido a menos que operen en unidades diferentes.

información relacionada