Portál AbcLinuxu, 27. července 2025 20:33
Nevite nekdo proc ?
CIL: Cilem podobneho skriptu je vybrat pouze urcitou skupinu fotografii (range) z velkeho poctu.
#!/bin/bash touch DSCF8357.JPG DSCF8359.JPG DSCF8461.JPG DSCF8566.JPG for fn in `ls *.JPG`; do #echo "$fn"; if [ `expr substr $fn 5 3` -le "357" ] && [ `expr substr $fn 5 3` -ge "566" ] ; then echo "Prave jsme nasli: $fn" ; fi done rm -rf DSCF8357.JPG DSCF8359.JPG DSCF8461.JPG DSCF8566.JPG
||
).
Spíš má obráceně ty podmínky (jestli chce opravdu rozsah). IMHO měl na mysli něco jako
for f in *.JPG; do n=$[10#${f:4:4}] if [ $n -ge 8357 -a -$n -le 8566 ]; then echo "$f" fi done
Chybička se vloudila… :-)
--- x.orig 2011-06-25 12:59:31.831392349 +0200 +++ x 2011-06-25 12:59:53.727116282 +0200 @@ -1,6 +1,6 @@ for f in *.JPG; do n=$[10#${f:4:4}] - if [ $n -ge 8357 -a -$n -le 8566 ]; then + if [ $n -ge 8357 -a $n -le 8566 ]; then echo "$f" fi done
Tam ale žádné regulární výrazy nejsou; jestli myslíte ten trik na druhém řádku, tak vás budou zajímat spíš sekce Arithmetic Evaluation a Parameter Expansion v manuálové stránce k bashi.
Na druhou stranu, pokud se naučíte používat regulární výrazy, dříve či později se vám to určitě hodit bude, takže vás od nich rozhodně nechci odrazovat. :-)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.