Dateien umbenennen mit bash-Script

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
nyami
Beiträge: 373
Registriert: 14.01.2003 13:30:28
Lizenz eigener Beiträge: GNU General Public License

Dateien umbenennen mit bash-Script

Beitrag von nyami » 27.12.2019 17:06:33

Hallo,

da hier die Experten sind, wage ich es hiermit einmal um Hilfe zu bitten, was selbstverständlich in diesem Fall nichts mit Debian zu tun hat!

Ich muß ca. 6000 Textdateien umbenennen.
In den Dateien (Chordpro-Format für die Interessirten) befinden sich Songtitel und Interpreten die so dargestellt werden:

{t:Highway to hell}
{st:AC / DC}

Diese will ich auslesen, zusammen fügen einige Zeichen austauschen etc.pp und dann nutzen um die Dateien umzubenennen.
Nachfolgend
1. Inhaltsbeispiel einer Datei
2. Scriptversuch
3. Ergebnis

Code: Alles auswählen

cat 1941.pro 
{t:1941 }  
{key: A}  
{st:Harry Nilsson}  
Intro:  [Bb7]   [A7]  - ie last line of verse 1  
{C:}   
Well in [D7] nineteen-forty [G] one a happy [C7] father had a [A] son   
And by [D7] nineteen-forty [G] four the father [C7] walks right out the [A] door    
And in [D7] forty [G] five the mom and [C7] son were still a-[A]live   
But [Bb7] who could tell in forty six if the [A7] two were to survive   
{C:}   
Well the [D7] years were passing [G] quickly,    
but not [C7]  fast enough for [A] him   
So he [D7] closed his eyes through [G] fifty five,    
then he [C7] opened them up [A] again   
Then he [D7] looked around he [G] saw a clown    
and the [C7] clown seemed very [A] gay  
.....usw. 

Code: Alles auswählen

#!/bin/bash
IFS=$'\n';
for i in $(ls *.pro); do
echo 'es wird bearbeitet: '$i
titel=$(egrep '{t:.*}' $i)
interpret=$(egrep '{st:.*}' $i)
echo $titel
echo $interpret
echo $titel $interpret
done
IFS=$' ';
Bei der anschließenden Ausgabe werden die Variablen auch untereinander angezeigt.
Versuche ich diese zu verketten(Script Zeile 9) läuft da irgendetwas falsch:

Code: Alles auswählen

./rename_pro.sh 
es wird bearbeitet: 1941.pro
{t:1941 }  
{st:Harry Nilsson}  
 {st:Harry Nilsson}  
Ich verstehe es einfach nicht...
diverse Hardware...

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Dateien umbenennen mit bash-Script

Beitrag von inne » 27.12.2019 17:23:27

Hallo,

vlt. hilft es dir, das Skript mit set -x/xtrace zu starten und zu verfolgen was passiert? Dein Beispiel oben, läuft jedenfalls mit BASH unter Cygwin auf Windows 10, wie ich es erwarten würde ;-)

Code: Alles auswählen

$ bash foo.sh
es wird bearbeitet: foo.pro
{t:1941 }
{st:Harry Nilsson}
{t:1941 }   {st:Harry Nilsson}
$ bash --version
bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)

Benutzeravatar
nyami
Beiträge: 373
Registriert: 14.01.2003 13:30:28
Lizenz eigener Beiträge: GNU General Public License

Re: Dateien umbenennen mit bash-Script

Beitrag von nyami » 27.12.2019 17:52:13

Dank e inne,

ich sehe zwar mehr, verstehe es aber auch dadurch nicht!
Kann das ggfs. mit DOS Zeilenumbrüchen zu tun haben?
diverse Hardware...

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Dateien umbenennen mit bash-Script

Beitrag von inne » 27.12.2019 17:54:47

K.A. Es ist nur seltsam, das title bei zweiten Aufruft leer ist? Ist es leer?
Kann das ggfs. mit DOS Zeilenumbrüchen zu tun haben?
Ich weiss nicht, die haben einen Wagenrücklauf...

Benutzeravatar
ragan62
Beiträge: 3
Registriert: 27.12.2019 16:11:36

Re: Dateien umbenennen mit bash-Script

Beitrag von ragan62 » 27.12.2019 18:02:02

Läuft glatt durch, erstellt mit nano:

# ./z.sh
es wird bearbeitet: 1941.pro
{t:1941 }
{st:Harry Nilsson}
{t:1941 } {st:Harry Nilsson}

# bash --version
GNU bash, Version 4.4.12(1)-release (x86_64-pc-linux-gnu)
mfg ragan62

Benutzeravatar
nyami
Beiträge: 373
Registriert: 14.01.2003 13:30:28
Lizenz eigener Beiträge: GNU General Public License

Re: Dateien umbenennen mit bash-Script

Beitrag von nyami » 27.12.2019 18:07:23

OK, es sind die Zeilenumbrüche im DOS-Format.
Kann man diesen Fehler irgendwie abfangen?
Mit "dos2unix" umwandeln geht es!
diverse Hardware...

Antworten