sala@home:~$

GNU parallel

Bár find + xargs segítségével rengeteg érdekes problémát meg tudunk oldani, túlzás lenne azt állítani, hogy a túl kényelmes a két parancs használata. A neve alapján GNU parallelről azt gondoltam, hogy csak a párhuzamos feldolgozásban ( lásd xargs -P ) fog segíteni, de némi használat után úgy látom hogy a párhuzamosságon kívül a használata is egyszerűbb.

Ha egy alkönyvtár png fájljait szeretném jpeg formátumra átkonvertálni és egyben átméretezni, akkor a find + xargs használatával a következőképpen tehetem ezt meg:

find . -name '*.png' | xargs -n1 -i basename {} .png | xargs -P 2 -n1 -i convert -resize 1200x1200 {}.png {}_web.jpg

Ha xargs helyett parallelt használok, akkor több kapcsolóra és a basename használatára sincsen szükség:

find . -name '*.png' | parallel convert -resize 1200x1200 {} {.}_web.jpg

Következő lépésben a find-ot is megszüntethetjük a ::: használatával:

parallel convert -resize 1200x1200 {} {.}_web.jpg ::: *.png

Ha egyszerre szeretnék két méretre is átméretezni, akkor erre is van lehetőségünk:

parallel convert -resize {2}x{2} {1} {1.}_{2}.jpg ::: *.png ::: 1200 300

 A parancs hatására alma.png fájlból alma_300.jpg, alma_1200.jpg fájlokat kapjuk.

Számtalan példát írhatnék még, de szerintem egyszerűbb a program írójának, Ole Tangénak a bemutatását megnézni: