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.

Comments

comments powered by Disqus