traller
Goto Top

Teil eines Dateinnamen als Variable festlegen

In einem Ordner kommen folgende Dateinamen vor:
ffff_0101.ab
bbb_0101.ab
wie kann ich mir den Teil "0101" als Variable in einem Script festlegen.
Das müsste ja irgendwas sein mit
variable=$(grep irgendwas??)

Content-Key: 251473

Url: https://administrator.de/contentid/251473

Printed on: April 25, 2024 at 21:04 o'clock

Member: colinardo
Solution colinardo Oct 09, 2014 updated at 21:31:45 (UTC)
Goto Top
filename="ffff_0101.ab"  
nummer=$(echo $filename | awk -F '[_\.]' '{print $2}')  
oder
filename="bbb_0101.ab"  
nummer=${filename##*_}
nummer=${nummer%.ab}
echo $nummer
usw.

http://tldp.org/LDP/abs/html/string-manipulation.html

Grüße Uwe
Member: Arano
Solution Arano Oct 09, 2014 updated at 21:31:47 (UTC)
Goto Top
Hi,

habs noch fix zusammen getippt bevor der Tag zu Ende ist
Edit: war wohl doch zu langsam *g*

arano:~/test$ ls -l ./
insgesamt 0
-rw-r--r-- 1 arano arano 0 Okt  9 23:16 eee_1001.ab
-rw-r--r-- 1 arano arano 0 Okt  9 23:16 fff_0101.ab
arano:~/test$ for f in `ls ./`; do n=`basename $f ".ab" | cut -d"_" -f2`; echo "---\$n="$n; done  
---$n=1001
---$n=0101
arano:~/test$ 


Viel Spaß damit
~Arano
Member: traller
traller Oct 09, 2014 updated at 21:32:27 (UTC)
Goto Top
Zitat von @colinardo:

> filename="ffff_0101.ab"  
> nummer=$(echo $filename | awk -F '[_\.]' '{print $2}')  
> 
das klappt bei mir nicht so ganz, da ist irgendwo noch ein Fehler drinnen ... das muss wohl noch weiter verschachtelt werden.
#!/bin/bash
database="DATENBANK"  
filename=$(find $database*)
datum=$(echo $filename | awk -F '[_\.]' '{print $2}')  
echo $datum
Vorgegeben ist manuell die "DATENBANK". Nun soll er mir mit find den Dateinahmen auswerfen, da steht dann
DATENBANK_0101.ab
und von dieser Ausage soll es gekürzt werden


EDIT: Fehler gefunden, es fehlte ein *. hab es oben korrigiert.