Skriptfrage: Letzte 4 Zeichen abschneiden?
Hallo Liste, wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht: Von einem Verzeichnis mit Dateien z.B. bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif erstelle ich eine Datei (ls *.tif > inhalt.txt) Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert. Welcher Befehl führt mich ans Ziel? Viele Grüsse Joachim
Hallo, * Joachim Kieferle schrieb am 06. February 2003:
Hallo Liste,
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert.
Welcher Befehl führt mich ans Ziel?
sed 's/\.tif$//' Grüße, Thomas
* On Thu, 06 Feb 2003 at 10:05 +0100, Joachim Kieferle wrote:
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert.
adalbert@pepe:/tmp > sed 's/....$//' test bild1 bild2 bild.irgendeines.1 bild.einanderes.n adalbert@pepe:/tmp > for I in `cat test` ; do echo ${I%.tif} ; done bild1 bild2 bild.irgendeines.1 bild.einanderes.n Und mit awk gehts garantiert auch, aber das soll David demonstrieren :-) -- Adalbert GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Thu, 06 Feb 2003, Adalbert Michelic wrote:
* On Thu, 06 Feb 2003 at 10:05 +0100, Joachim Kieferle wrote:
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert.
adalbert@pepe:/tmp > sed 's/....$//' test
sed 's/.\{4\}$//' sed 's/\.tif$//i' sed 's/\.[^.]\+$//'
adalbert@pepe:/tmp > for I in `cat test` ; do echo ${I%.tif} ; done
while read n; do echo "${n%????}"; done while read n; do echo "${n//.tif/}"; done while read n; do echo "${n%.*}"; done while read n; do basename "$n" .tif; done while read n; do basename "$n"; done
Und mit awk gehts garantiert auch, aber das soll David demonstrieren :-)
awk '{sub(/....$/,"");print}' awk '{sub(/\.tif$/,"");print}' awk '{sub(/\.[^.]+$/,"");print}' perl -pe 's/.{4}$//i;' perl -pe 's/\.tif$//i;' perl -pe 's/\.[^.]+$/\n/i;' TMTOWTDI -dnh -- Fenster muss man nur ab und zu putzen, damit wieder mehr Licht rein kommt. Sind sie kaputt, musst Du neue kaufen. Pinguine muss man pflegen - dafür können sie dann Kunststücke, die ein Fenster nie hinkriegt. Genug Heringe, und sie vermehren sich sogar :-) [Arndt Böhm in dcoulh]
Joachim Kieferle wrote:
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert.
Das geht sicher mit awk, es geht IMHO noch einfacher "quick & dirty" in der Shell (bash-spezifisch!): for file in *.tif ; do echo ${file/.tif/} >> inhalt.txt; done Gruesse, Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
* Am Don, 06 Feb 2003 schrieb Joachim Kieferle:
Hallo Liste,
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
basename bild1.tif .tif gibt bild1 usw. Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
On Thu, Feb 06, 2003 at 10:05:56AM +0100, Joachim Kieferle wrote:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
for i in *.tif do name="`basename $i .tif`" echo $name >> namelist done Kristian -- http://www.amazon.de/exec/obidos/wishlist/18E5SVQ5HJZXG
Joachim Kieferle schrieb:
Hallo Liste,
wahrscheinlich ist die Lösung sehr einfach, aber ich find' sie einfach nicht:
Von einem Verzeichnis mit Dateien z.B.
bild1.tif bild2.tif bild.irgendeines.1.tif bild.einanderes.n.tif
erstelle ich eine Datei (ls *.tif > inhalt.txt)
Dann brauche ich die Dateinamen, sprich man sollte die letzten 4 Zeichen (.tif) abschneiden. Mit awk scheint das nicht zu funktionieren, weil der "." als Trennzeichen nicht funktioniert.
Welcher Befehl führt mich ans Ziel?
Ich hätt da auch noch einen ;) for i in `ls --color=no *.tif`; do echo ${i%.tif}; done man bash -->parameter expansion Und warum soll das mit awk nicht gehen? --------8<-------- 579 > cd /tmp [bernd@burdon]-8-xterm-color /tmp 580 > for z in `seq 1 10`;do echo $z >tif.$z.tif;done [bernd@burdon]-8-xterm-color /tmp 581 > ls *.tif tif.1.tif tif.2.tif tif.4.tif tif.6.tif tif.8.tif tif.10.tif tif.3.tif tif.5.tif tif.7.tif tif.9.tif [bernd@burdon]-8-xterm-color /tmp 582 > ls -l --color=no *.tif| awk '{gsub(/\.tif$/,"");print}' -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.1 -rw-r--r-- 1 bernd users 3 Feb 6 17:32 tif.10 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.2 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.3 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.4 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.5 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.6 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.7 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.8 -rw-r--r-- 1 bernd users 2 Feb 6 17:32 tif.9 [bernd@burdon]-8-xterm-color /tmp 583 > rm /tmp/*.tif [bernd@burdon]-8-xterm-color /tmp 584 > --------8<-------- so long... bernd
participants (8)
-
Adalbert Michelic
-
Bernd Obermayr
-
Christoph Maurer
-
David Haller
-
Joachim Kieferle
-
Kristian Koehntopp
-
Thomas Hertweck
-
Thomas Preissler