Multi-thread avec xargs

Un truc que je ne savais pas c’est qu’il est possible de faire du multi-thread avec xargs. C’est plutôt simple et ça fonctionne très bien.

Par exemple dans un script qui met à jour tous les repositories git de ma machine je peux faire ça :

find -L ~ -maxdepth 5 -path "*.git" -not -path "*zprezto*" -type d 2> /dev/null | \
  xargs --max-proc=4 -n 1 -I {} bash -c "update_git_repo {}"

Et xargs me crée un pool de 4 thread pour paralléliser ma mise à jour.

Autre truc sympa avec xargs on peut nommer et ré-utiliser les arguments :

docker ps -aq | xargs -I_id -n1 sh -c 'docker stop _id && docker rm -v _id'