Portál AbcLinuxu, 7. května 2025 22:01
for f in $(find . -name '*.jpg'); do mv "$f" "$(dirname "$f")/prefix_$(basename "$f")"; donePotreboval bych to upravit tak, aby to fungovalo na vice pripon, t.j. jpg, jpeg, gif, atd a aby prefix bylo jmeno nadrazeneho adresare + znak pomlcky. Mam adresare a123 a124 a125 a v nich jsou ty obrazky. Potrebuju z kazdeho toho adresare spustit ten skript, on by si zjistil ze je v adresari a123 a pridal tedy vsem obrazkum prefix a123-obrazek1.jpg, atd. Druha moznost je, ze by to proslo ty obrazky abecedne, jak jdou za sebou a prejmovalo je to na a123-1, a123-2,atd. To by bylo jeste lepsi. Dekuji za pomoc, na bash scripty jsem totalni lama
for d in *; do cd $d || continue i=1 for f in *; do mv $f $d-$((i++)) done cd - done
#!/bin/bash dir=`basename $PWD` rename "s/(.*)/$dir-\1/" *.{jpg,jpeg,gif} 2>/dev/null
petr@T400:~/test/e123$ ./prejmenuj.sh ./prejmenuj.sh: řádek 3: cd: e123-1.jpeg: není adresářem ./prejmenuj.sh: řádek 3: cd: e123-2.jpeg: není adresářem ./prejmenuj.sh: řádek 3: cd: e123-3.jpeg: není adresářem ./prejmenuj.sh: řádek 3: cd: prejmenuj.sh: není adresářem petr@T400:~/test/e123$No a ten druhy zase doplni prefix, to funguje super, ale pokud mam obrazky s nazvem A,B,C, atd, slo by udela ,aby je prejmenoval na e123-1, atd? Aby uplne smazal jejich nazev a prepsal je nazvem adresare a -1,-2,-3, atd?
cili mam a.jpg,b.jpg,c.jpg a chci e123-1.jpg e123-2.jpgatd..
#!/bin/bash prefix=`basename $PWD`"-" a=1 for i in *.jpg; do new=$prefix$(printf "%01d.jpg" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done a=1 for i in *.jpeg; do new=$prefix$(printf "%01d.jpeg" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done a=1 for i in *.png; do new=$prefix$(printf "%01d.png" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done
#!/bin/bash prefix=`basename $PWD`"-" prefix=$(zenity --entry --entry-text=$prefix) retval=$? case $retval in 0) echo "Input string is '$prefix'";; 1) exit;; esac # ============================== jpg a=1 for i in *.jpg; do new=$prefix$(printf "%01d.jpg" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done # ============================== jpeg a=1 for i in *.jpeg; do new=$prefix$(printf "%01d.jpeg" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done # ============================== png a=1 for i in *.png; do new=$prefix$(printf "%01d.png" "$a") #04 pad to length of 4 mv -- "$i" "$new" let a=a+1 done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.