Portál AbcLinuxu, 24. dubna 2024 18:48


Dotaz: Prejmenovani vice souboru v adresari na jiny retezec

26.4.2005 14:21 J77
Prejmenovani vice souboru v adresari na jiny retezec
Přečteno: 98×
Odpovědět | Admin
Dobry den, rad bych poprosil o radu ci nejlepe primo bashovy skript, ktery by mi umoznil prejmenovat veskere soubory v danem adresari, v poradi, v jakem jdou za sebou serazene podle jmena, do daneho formatu, kde bych si prvni cast retezce zvolil a druha by byla vzdy -001 , -002, -003, a tak dale. Priklad:

Puvodni obsah adresare:

DSC_0005.jpg

DSC_0012.jpg

DSC_0039a.jpg

Kyzeny vysledek po vykonani skriptu zadaneho s parametrem "0001":

0001-001.jpg (misto DSC_0005.jpg)

0001-002.jpg (misto DSC_0012.jpg)

0001-003.jpg (misto DSC_0039a.jpg)

Pomuze prosim nekdo ?

Jaromir
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.4.2005 14:40 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Odpovědět | | Sbalit | Link | Blokovat | Admin
Něco jako tohle?
i=1; for x in *.jpg; do mv $x blah_`printf %03d $i`.jpg; i=$((i + 1)); done
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
wake avatar 26.4.2005 14:55 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
tohle nezachova poradi podle abecedy. (napr. na reiseru)
Tento příspěvek má hlavičku i patičku!
26.4.2005 15:06 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Jaktože ne? * se expanduje na abecedně seřazený seznam.
wake avatar 26.4.2005 15:21 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
nojo, mate pravdu. jdu se utopit mezi hvezdicky... ;-)
Tento příspěvek má hlavičku i patičku!
26.4.2005 14:40 Michal Kubeček
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Odpovědět | | Sbalit | Link | Blokovat | Admin
for f in DSC_*.jpg; do mv -vi "$f" "0001-${f#DSC_}"; done

for f in DSC_*.jpg; do mv -vi "$f" "${f/DSC_/0001-}"; done

26.4.2005 14:42 Michal Kubeček
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Pardon, přehlédl jsem, že chcete zároveň přečíslovat.
wake avatar 26.4.2005 14:46 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash
#$1..prefix (0001)
#$2..suffix (.jpg)
I=0
ls | sort | while read name; do
I=I+1
mv "${name%$2}$2" ${1}-`printf "%03d" $I`$2
done
Tento příspěvek má hlavičku i patičku!
wake avatar 26.4.2005 14:48 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
samozrejme ... ls *.$2 | sort | ... :-(
Tento příspěvek má hlavičku i patičku!
wake avatar 26.4.2005 14:51 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
samozrejme (tj bez tecky mezi * a $2)
.
.
ls *$2 |sort|...
.
.
Tento příspěvek má hlavičku i patičku!
wake avatar 26.4.2005 14:53 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
a jeste
.
.
I=$((I+1))
.
.
Tento příspěvek má hlavičku i patičku!
wake avatar 26.4.2005 14:53 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
a ted uz to je BugFree TM ;-)
Tento příspěvek má hlavičku i patičku!
29.4.2005 09:54 J77
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Diky vsem za napady a postupy, co nejdrive to vyzkousim :)
3.5.2005 09:00 J77
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Tak ten opraveny skript v teto podobobe:

#!/bin/bash

#$1..prefix (0001)

#$2..suffix (.jpg)

I=0

ls *$2 |sort| while read name; do

I=$((I+1))

mv "${name%$2}$2" ${1}-`printf "%03d" $I`$2

done

- - - pri pouziti vypise nasledujici chybu:

mv: invalid option -- 0 Try `mv --help' for more information.
29.4.2005 10:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
A tohle mv "${name%$2}$2" je jako co? Procesor nemá co na práci a tak mu nějakou dáme?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
wake avatar 29.4.2005 11:06 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
to je prosim aspirace na cenu "nejzbytecnejsi pouziti operatoru % v skriptovacim jazyce bash"... ;-)
Tento příspěvek má hlavičku i patičku!
3.5.2005 09:20 J77
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
ak ten opraveny skript v teto podobobe:

#!/bin/bash

#$1..prefix (0001)

#$2..suffix (.jpg)

I=0

ls *$2 |sort| while read name; do

I=$((I+1))

mv "${name%$2}$2" ${1}-`printf "%03d" $I`$2

done

- - - pri pouziti vypise nasledujici chybu:

mv: invalid option -- 0 Try `mv --help' for more information.
3.5.2005 09:34 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
V této podobě? Tj. ty to spouštíš, aniž opravdu tomu dáš nějaké argumenty (prefix a suffix)? Chybu sice opraví s/mv/mv --/, ale stejně to nebude dělat, co chceš, když tomu neřekneš, co to má dělat.

Mimochodem "${name%$2}$2" je opravdu kandidát nejzbytečnější použití operátoru % v shellu... "$name" je totéž.
3.5.2005 10:01 J77
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Ja jsem kripl, omlouvam se. Asi jsem byl duchem ponekud nepritomen.
10.7.2006 11:04 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zrovna se zabývám podobným problémem. Potřebuji přejmenovat všechny soubory v adresáři dle abecedy na 01.jpg,02.jpg,03.jpg,... takže téměř to samé. Podmínkou, ale je, že k tomu nechci použít skript. Nevím jestli k tomu použít mv, rename, mmv či něco jiného. Představoval bych si něco jako 'prejmenuj * ++[00].jpg'. Takže něco velice jednoduchého, nechci skript. díky.. (dokumentací k mmv se teprve prokousávám a google ani ldp mi to s tou angličtinou moc nezjednodušují)
10.7.2006 23:24 Vlastimil Ott | skóre: 66 | blog: Plastique | Opava
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Není to tedy skript, ale umí to KRename a také gThumb (prohlížeč obrázků).
Práce: Liberix, o.p.s. | Blog: OpensourceBlog.cz | Online kurz Zlatý WordPress
11.7.2006 10:02 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Může být?
rename 'no strict "vars"; $_="prefix-${\(sprintf q.%03d., ++$i)}.jpg"' *.jpg
Jen jestli máš to správné rename :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
11.7.2006 10:07 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Teda stejně nechápu co se ti nelíbí na:
i=1; for x in *.jpg; do mv "$x" prefix-$(printf %03d $i).jpg; let i++; done
Kromě toho, že je to pomalejší.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
11.7.2006 10:47 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
okrem situacie, ked ls *.jpg | wc -l je viac ako 999, a toho, ze v zozname je aj subor "prefix-DDD.jpg", to uplne v poriadku :-D. Ale na to uplne postaci mv -i
11.7.2006 13:30 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Prejmenovani vice souboru v adresari na jiny retezec
Tak místo 03 napiš 04 no :-D
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.