2024-09-29-ean
Script bat irudi formatuak bihurtzeko
Gaur zerbait berria ikasi dut scripta sortzean:
sem kommandoa erabiliz tratamenduak modu paralleloan sor ditzakegu.
Kasu honetan, jpg file guztiak aldatu nahi ditut webp-ra, komando honekin:
$ cwebp -quiet "$ORIGINAL" -o "$NEWNAME"
Hori lortzeko, script arrunt bat sor ditzaket, baina oso motel izango da...:
#!/bin/bash
find . -name "*.jpg" | while read file
do
NEWNAME=${file/.jpg/.webp}
cwebp -quiet "$file" -o "$NEWNAME" && rm "$file"
done
Ezin ditut fixategiak bana-banan aldatu, ezta denak aldi-berean ere.
Arazo hau konpontzeko, semaphore bat erabiliko dugu, eta modu gardenean scriptak aldatuko ditu fitxategiak 10etik 10era:
$ sem -j 10 --semaphorename jpeg2webp '(cwebp -quiet "'$ORIGINAL'" -o "'$NEWNAME'" && rm "'$ORIGINAL'")'
Hemen:
- -j 10 : 10etik 10era aldatuko ditugu fixategiak. ("10 jobs")
- --semaphorename jpeg2webp : gure semaphore-ari izena bat jartzen diogu
Script guztia:
#!/bin/bash
find . -name "*.jpg" | while read file
do
NEWNAME=${file/.jpg/.webp}
if [ -f "$NEWNAME" ]
then
echo "ALREADY EXISTING! $NEWNAME"
rm "$file"
else
echo "Converting $file to $NEWNAME"
sem -j 10 --semaphorename jpeg2webp '(cwebp -quiet "'$file'" -o "'$NEWNAME'" && rm "'$file'")'
fi
done
echo "Script done."