Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: rationaalinen - 07.08.09 - klo:15.42

Otsikko: Bash: Tiedostojen uudelleen nimeäminen
Kirjoitti: rationaalinen - 07.08.09 - klo:15.42
Morjens foorumilaiset!

Tarkoituksenani on automatisoida kansiossa olevien kuvien pakkaus. Saan pakattua kansiossa olevat kuvat convertin avulla seuraavalla bash scriptillä:

#!/bin/sh

for i in *.JPG; do convert -quality 30 "$i" "$i.jpeg"; done

Nyt kaikista kansiossa olevista JPG-kuvista luodaan pakattu versio, jonka nimeksi tulee *.JPG.jpeg.

Miten saisin tallennettua JPG kuvien nimet bash scriptin muuttujaan ja poistettua merkkijonosta *.JPG-päätteen siten että *.JPG-kuvan pakatun version nimeksi tulisi esim. *-compressed.jpeg?

Hitaampi keino olisi käydä kansion *.JPG.jpeg-tiedostot läpi toisella for-loopilla ja uudelleen nimetä (rename) ne *.jpeg:ksi.

t: Rationaalinen
Otsikko: Vs: Bash: Tiedostojen uudelleen nimeäminen
Kirjoitti: SuperOscar - 07.08.09 - klo:15.52
Ymmärsinkö nyt oikein?

Koodia: [Valitse]
for i in *.JPG; do
    convert -quality 30 "$i" "${i%.JPG}-compressed.jpeg"
done
Otsikko: Vs: Bash: Tiedostojen uudelleen nimeäminen
Kirjoitti: rationaalinen - 07.08.09 - klo:16.30
Morjens,

oikein meni.

Tein vielä pienen lisäyksen:

#!/bin/sh

mkdir $PWD/compressed

for i in *.JPG; do convert -limit memory 100mb -quality 30 $i $PWD/compressed/"${i/.JPG}-compressed".jpeg; done

nykyiseen kansioon luodaan "compressed"-niminen alikansio, johon kaikki *.JPG kuvat pakataan.

Kiitos!

t: Rationaalinen
Otsikko: Vs: Bash: Tiedostojen uudelleen nimeäminen
Kirjoitti: mgronber - 07.08.09 - klo:18.51
mkdir $PWD/compressed

Skripteissä on parempi käyttää muotoa
Koodia: [Valitse]
mkdir -p hakemistopolku