Bash sequences

Χρειάστηκε χθες να κάνω επανάληψη for σε ακολουθίες του τύπου 01,02,..,xx με χρήση του Bash Shell για την τακτοποίηση κάποιων αρχείων στο δίσκο του pc μου. Να οι τρόποι που βρήκα:

  1. Με χρήση της παραμέτρου -w του seq (προτάθηκε από τον vvas):
    for i in $(seq -w 30); do echo Doing stuff with $i; done
  2. Με χρήση xargs και printf (προτάθηκε από τον keramida):
    for i in $(seq 30 | xargs -n1 printf "%02d\n"); do echo Doing stuff with $i; done
  3. Με χρήση της έκφρασης ακολουθίας με αγκύλες του Bash 4.x (προτάθηκε από τον ltsampros):
    for i in {00..30}; do echo Doing stuff with $i; done

Ο τρίτος τρόπος είναι σαφώς πιο μαζεμένος και εύκολος να τον θυμάται και να τον συντάσσει κανείς, αλλά η χρήση xargs και printf λειτουργεί και σε παλιότερες εκδόσεις Bash και δίνει μια διαφορετική χάρη και ευελιξία. :)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>