Portál AbcLinuxu, 10. listopadu 2025 05:32
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.