sala@home:~$

Kiterjesztés levágása

Valójában csak azért írtam pár napja a basename-ról, hogy egy hiányosságára felhívjam a figyelmet. Ha egy scriptünk jpg fájlokkal dolgozik, akkor könnyen levághatjuk a kiterjesztést:

$ basename alma.jpg .jpg
 alma

Ha viszont egy olyan scriptet írunk ami többféle formátummal is dolgozhat, akkor a basename-et nem tudjuk használni, mert nincs olyan paraméterezése (legalábbis nem tudok róla) ami az összes kiterjesztést levágja.

Ha csak kétféle kiterjesztést kell kezelni, akkor néha 2 basename-mel oldom ezt meg, de erre nem vagyok büszke. A következő módon a jpg és png kiterjesztést is le lehet vágni:

$ basename $(basename alma.jpg .jpg) .png
alma
$ basename $(basename alma.png .jpg) .png
alma

Ha univerzálisan akarjuk a kiterjesztést levágni, akkor a bash beépített lehetőségeit használhatjuk:

$ s=input.jpg
$ echo ${s%.*}
input

Ha nemcsak a kiterjesztést, hanem az alkönyvtárat is le akarjuk vágni (hasonlóan basename-hez) akkor kicsit még bonyolultabb a használat:

$ s=/tmp/input.jpg
 $ echo ${s%.*}
 /tmp/input
 $ s2=${s##*/}
$ echo ${s2%.*}
input