Zautomatyzowana konwersja plików¶
Często do automatycznej konwersji plików pisze się pętle, wyglądające mniej więcej tak:
Sposób 1¶
#!/bin/bash
IFS=$'\n'
for filename in `ls *.png`; do
# TODO: Execute sth on each file
# this is only example (it may not work - not tested)
new_file_name=`basename $filename .png`
convert $filename $new_file_name
done
Sposób fajny, ale za każdym razem trzeba to napisać/skopiować. Jest również rozwiązanie prostsze:
Sposób 2¶
ls *.png | xargs -I{} echo convert "{}" '`basename {} .png`'.eps > runme.sh && \
bash runme.sh && \
rm runme.sh
Podsumowując¶
Wynik działania obu skryptów powinien być identyczny - niemniej jednak skrypt numer 1 powinien być wykorzystany, jeżeli wymagane jest wykonanie wielu operacji na jednym pliku.
Natomiast skrypt numer 2 ma taką zaletę, że można go napisać w jednej linii - nie jest wymagane tworzenie osobnego pliku .sh.