ubuntuusers.de

Script schreiben um mehrere Dateien zu konvertieren

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

LowDepth

Avatar von LowDepth

Anmeldungsdatum:
8. März 2007

Beiträge: 101

Wohnort: Augsburg

Hallo, ich suche nach einem Script oder eben Anregungen, wie ich am einfachsten&schnellsten beliebig viele *.bin Dateien in *.txt Dateien umwandeln kann, ohne dass ich jedes mal:

1
wine bin2asc.exe filename.bin neuername.txt

in die Konsole eingeben muss. Habe nämlich nur eine Windows Lösung für die Konvertierung. Das "Programm" sollte alle *.bin Dateien, die sich in einem Ordner befinden in eine gleichnamige *.txt Datei umwandeln.

Gruß

dAnjou

Avatar von dAnjou

Anmeldungsdatum:
8. Oktober 2007

Beiträge: 872

Wohnort: Berlin

1
mv datei.bin datei.txt

benennt eine Datei um

LowDepth

(Themenstarter)
Avatar von LowDepth

Anmeldungsdatum:
8. März 2007

Beiträge: 101

Wohnort: Augsburg

Ich brauche keine Umbenennung, sondern eine Umwandlung von Binärcode auf ASCII.

phst

Anmeldungsdatum:
24. Juni 2007

Beiträge: 527

Was verstehst du darunter? Was macht dein Windows-Programm?

dAnjou

Avatar von dAnjou

Anmeldungsdatum:
8. Oktober 2007

Beiträge: 872

Wohnort: Berlin

Oh, sry. Verplant...

Zeig mal her sone Datei, ich versuch mal n script zu basteln.

schusch

Avatar von schusch

Anmeldungsdatum:
2. September 2008

Beiträge: 324

Wohnort: Berlin

Meinst du sowas?

1
2
3
4
5
6
7
8
# Für alle Dateien unter dem aktuellen Verzeichnis die *.bin heißen wird der wine-Befehl aufgerufen
hier=`pwd`
for Datei in `find . -name '*.bin'`;do
    Verzeichnis=`dirname $Datei`, cd $Verzeichnis
    Dateiname=`basename $Datei .bin`
    wine bin2asc.exe "$Dateiname".bin "$Dateiname".txt
    cd $hier
done

x-haui

Anmeldungsdatum:
18. September 2007

Beiträge: 111

schusch schrieb:

Meinst du sowas?

1
2
3
4
5
6
7
8
# Für alle Dateien unter dem aktuellen Verzeichnis die *.bin heißen wird der wine-Befehl aufgerufen
hier=`pwd`
for Datei in `find . -name '*.bin'`;do
    Verzeichnis=`dirname $Datei`, cd $Verzeichnis
    Dateiname=`basename $Datei .bin`
    wine bin2asc.exe "$Dateiname".bin "$Dateiname".txt
    cd $hier
done

Hallo,

daraus ergeben sich aber wohl einige Probleme, so wird es bei Ordner-/Dateinamen mit Leerzeichen nicht funktionieren. Ebenso durchsucht das Script auch alle Unterverzeichnisse - so wie ich das verstanden habe, sollen aber nur Dateien aus dem aktuellen Verzeichnis konvertiert werden.

Ich würde es z.B. so versuchen:

find . -maxdepth 1 -name '*.bin' -print0 | while read -d $'\0' line ; do wine bin2asc.exe "$line" "$(basename "$line" bin)"txt ; done

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

find kennt die Option -exec zum Ausführen eines Kommandos. Um das Kommando im beinhaltenden Verzeichnis auszuführen: -execdir

1
find ./ -name "*.bin" -execdir wine bin2asc.exe '{}' '{}'.txt \; -execdir rename 's/.bin.txt$/.txt/' '{}'.txt \;

Das durchsucht Unterverzeichnisse - ob das gewünscht ist scheint mir ungeklärt - und hängt erstmal ein .txt an die Datei foo.bin an, so daß sie zu foo.bin.txt wird. Im zweiten Schritt wird sie dann umbenannt.

phst

Anmeldungsdatum:
24. Juni 2007

Beiträge: 527

Ich vermute eher, dass der OP einen Linux-Ersatz für sein Windows-Programm sucht. Von Unterordnern stand dort auch nichts. Das Gerüst müsste also eher so aussehen:

1
2
3
4
5
#!/bin/bash
for FILE in *.bin
do
  # Code
done

LowDepth

(Themenstarter)
Avatar von LowDepth

Anmeldungsdatum:
8. März 2007

Beiträge: 101

Wohnort: Augsburg

Hey, danke. Wenn auch Unterordner durchsucht werden macht mir das nichts. Was schusch gepostet hat ist also absolut für meine Zwecke ausreichend. Leerzeichen im Konvertierungsordner kann ich auch vermeiden.

Mille Grazie euch allen 😉. Ich habe gestern beschlossen mir ein bisschen Python anzueignen. Damit werde ich dann solch kleineren Problemen auch selber Herr.

Antworten |