22.11.2014, 03:13 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
Witwe_Bolte
Titel: toolame oggdec; leerzeichen parameter shell  BeitragVerfasst am: 25.06.2006, 10:44 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

mein 1. Versuch mit sed hakt vielleicht doch nur an toolame:
meine ogg-Dateien werden im aktuellen Verzeichnis so in wav umgewandelt:
find -type f|sed -e 's/['.']['/']//' -e 's/Joss/"&/g' -e 's/ogg/&"/g'|xargs oggdec
(Nicht auf die Détails in sed achten. Damit setz ich die Dateinamen nur in Doublequotes, weil sie Leerzeichen enthalten und die fangen halt alle mit 'Joss' an.)
soweit so gut. um die wav-dateien jetzt in mp3 umzuwandeln, hab ich es so versucht:
find -type f|grep wav|sed -e 's/['.']['/']//' -e 's/Joss/"&/g' -e 's/wav/&"/g'|toolame
Da antwortet mir toolame mit "USAGE usw."
Soweit ersichtlich hab ich auch alle Varianten mit xargs oder xargs -0 vor toolame durch, egal, ob ich wav mit grep oder mit find *wav rausfiltere.
Bei diesen Varianten meldet toolame "excess arg". Für Exzesse hab ich ja grds eine Schwäche.
Aber hilft mir hier einer?

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
makke
Titel: toolame oggdec; leerzeichen parameter shell  BeitragVerfasst am: 25.06.2006, 11:17 Uhr
Team Member
Team Member


Anmeldung: 02. Jan 2005
Beiträge: 906
Wohnort: Hagen
Ich würde eine einfache for-schleife machen.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: RE: toolame oggdec; leerzeichen parameter shell  BeitragVerfasst am: 25.06.2006, 12:31 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

danke für die prompte antwort. damit hatte ich erstmal angefangen. hab das ergebnis von find und sed in ne variable eingelesen und über die die for-schleife laufen lassen. toolame $datei in der schleife führte aber zum gleichen ergebnis, obwohl zwei echos sowohl die liste als auch den dateinamen richtig ausgegeben haben.
beim versuch, find an ein array zu übergeben, bin ich trotz D i c k e m shell-buch wohl an der syntax gescheitert.

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
makke
Titel: RE: toolame oggdec; leerzeichen parameter shell  BeitragVerfasst am: 25.06.2006, 13:53 Uhr
Team Member
Team Member


Anmeldung: 02. Jan 2005
Beiträge: 906
Wohnort: Hagen
wobei ich den sinn: ogg -> wav -> mp3 nicht ganz verstehe
jede kodierung bringt wieder einen qualitätsverlust
http://kanotix.com/index.php?name=PNphp ... mp;t=15873
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel:   BeitragVerfasst am: 26.06.2006, 08:16 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

Schon klar. Das ist auch der Weisheit letzter Schluß.
**censored** bekomme ich sonst auf 64bit nicht hin. Und meine CDs habe ich zum großen Teil als ogg auf der Platte. Hab nix gefunden, was direkt von ogg nach mp3 konvertiert. Der Player im neuen Auto von Weibi kann entgegen meinem Auftrag aber doch nur mp3 spielen. Keine Lust mit dem Autohaus zu streiten, weil ich schon hauptberuflich streite.
Außerdem wollte ich endlich mal was mit der Shell machen außer an fertigen Skripten rumzufummeln. ( Deinen Link kannte ich schon. Hab natürlich vorher das Forum durchwühlt.)

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: Bitte nochmal:  BeitragVerfasst am: 29.06.2006, 21:55 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

Jetzt hab ich es mit Variablen und Pipes direkt aufgegeben.
Mit
ls -1Q>>dirliste
hab ich erstmal alle Dateinamen in Anführungszeichen zeilenweise in dirliste.
Mache ich dann
while read i
do
oggdec $i
done < dirliste
beklagt sich oggdec, daß es die Datei nicht findet.
Mache ich in der while-schleife statt oggdec echo, wird brav zeilenweise in Anführungszeichen ausgegeben.
Daß oggdec * im CWD brav seine Arbeit versieht, bringt mich nicht weiter. Dann lern ich das ja nie Traurig

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel: Bitte nochmal:  BeitragVerfasst am: 29.06.2006, 21:56 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

toolame ist kein mp3, das ist mpeg 1 layer 2 und nicht 3.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel:   BeitragVerfasst am: 09.07.2006, 07:40 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

stimmt schon. Weil es aber problemlos abgespielt wird, ist mir das egal.
Das mit den Leerzeichen hab ich zwischenzeitlich mit Python erledigt. Ist eh hübscher.

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
schnorrer
Titel:   BeitragVerfasst am: 09.07.2006, 12:52 Uhr



Anmeldung: 09. Jan 2006
Beiträge: 1721

problem von tolame es kann Leehrzeichen nicht richtig verarbeiten, vor allem wenn sie per Pipe übergeben werden.
wandle alle filenamen mit leerzeichen in solche mit '_'.

ine einer Schleife:

for $datei
do
tolame $datei -weitere_parameter -parameter
shift $datei
done
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 09.07.2006, 15:44 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

Man kann sich auch mit dem Fuss am Kopf kratzen, wenn man will Winken

toolame erstellt mp2, ergo - direkt ohne wav:

for x in *.ogg; do ogg123 "$x" -dwav -f-|toolame - "$(echo $x|sed s/ogg/mp2/)" ; done

Wer aus was für Gründen auch immer mit nem wav Zwischenfile arbeiten will:

for x in *.ogg; do oggdec "$x"; toolame "$(echo $x|sed s/ogg/wav/)" "$(echo $x|sed s/ogg/mp2/)" ; done
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel:   BeitragVerfasst am: 09.07.2006, 15:47 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

Danke Schnorrer. Glaube ich eher nicht, weil toolame keine Probleme hat, wenn direkt eine Datei in Anführungszeichen mitgegeben wird.
Die Umbennung gefällt mir ebensowenig wie mit $IFS rumzuhantieren. Ursprungsdatei und Shell-Umgebung sollen unberührt bleiben. Fall es einer brauchen kann, hier meine python Lösung:
#!/usr/bin/env python
import os, string, re

def main():

liste=os.listdir(os.getcwd())
for datei in liste:
if re.search('.ogg',datei) is False:
continue
eingabe='"'+datei+'"'
kommando='oggdec '+eingabe
os.popen(kommando,'w')
liste=os.listdir(os.getcwd())
for datei in liste:
if re.search('.wav',datei) is False:
continue
eingabe='"'+datei+'"'
kommando='toolame '+eingabe
os.popen(kommando,'w')
main()

Wer bei Python ähnlich neu ist: Die Einrückungen werden beim Schriben zwar angezeigt, im Forum dann aber nicht. Muscha von Hand machen. (Aber das kennen wir Computer-Menschen ja nicht anders Smilie)
Beim Aufruf aus ner Shell muß man also in dem verzeichnis sein, in dem die Dateien liegen.
Ob re hier überhaupt richtig verwendet wurde, weiß ich nicht. Ist aber nicht so tragisch, da das Skript jedenfalls nicht abbricht.

_________________
unsensibel, aber empfindlich


Zuletzt bearbeitet von Witwe_Bolte am 09.07.2006, 18:31 Uhr, insgesamt 3 Male bearbeitet
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 09.07.2006, 15:53 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

Was für ne schöne kurze Scriptsprache Winken
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
slam
Titel:   BeitragVerfasst am: 09.07.2006, 18:09 Uhr



Anmeldung: 05. Okt 2004
Beiträge: 2069
Wohnort: w3
Man könnte auch code-Boxen verwenden, die hier im Forum freizügig und gratis angeboten werden - dann wird die Wurst wenigstens leserlich ...
Greetings,
Chris

_________________
"An operating system must operate."
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger ICQ-Nummer 
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: liest ja jetzt eh keiner mehr  BeitragVerfasst am: 18.07.2006, 12:19 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

...dann kann ich das ja jetzt mal mit dieser Code-Box probieren.
Here we go:
Code:

#!/usr/bin/env python
import os, string

def main():
   
   liste=os.listdir(os.getcwd())
   for datei in liste:
      if datei.endswith('ogg') == False:
         continue
      eingabe='"'+datei+'"'
      kommando='oggdec '+eingabe
      os.popen(kommando,'w')
      
   liste=os.listdir(os.getcwd())
   for datei in liste:
      if datei.endswith('wav') == False:
         continue
      eingabe='"'+datei+'"'
      kommando='**censored** '+eingabe
      os.popen(kommando,'w')
      
   kommando='rm -f *.wav'
   os.popen(kommando,'w')
   
main()


_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel: RE: liest ja jetzt eh keiner mehr  BeitragVerfasst am: 18.07.2006, 12:29 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

Kleine Variante mit basename statt sed:

for x in *.ogg; do ogg123 "$x" -dwav -f-|toolame - "$(basename "$x" .ogg).mp2"; done
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: Wow. Der Shellmeister  BeitragVerfasst am: 18.07.2006, 15:01 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

Sehr glücklich
Ist natürlich schicker. basename kannte ich gar nicht ( is es e wunder? )
Danke nochmal. Vielleicht kann ich noch mit nem Python vs. Bash Benchmark auftrumpfen Smilie

später: nö. schneller gehts mit scrpiting kaum.
Ne Idee, warum jetzt die Leerzeichen im Dateinamen bei toolame durchlaufen?

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel: RE: liest ja jetzt eh keiner mehr  BeitragVerfasst am: 18.07.2006, 15:16 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

Nun deine Lösung geht über Zwischenfiles, die brauchen Platz, bringen aber nichts. Der Zeitaufwand sollte wohl ähnlich sein.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: Leerzeichen und ich schon wieder  BeitragVerfasst am: 21.07.2006, 08:25 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

Mein Problem bleiben die Leerzeichen in Pfade und Dateinamen.
Warum Deine for-Schleifen funzen und meine nicht, kapier ich nicht. Habe mit find -print0 und xargs -0 wohl alles durch. Selbst wenn die Ausgabe von xargs -0 brav den ganzen Namen in "" ausgibt, bekommt zB rm immer die einzelnen Wörter. Das gleiche mit Backticks. Die Exapnsio *.suffix haut bei Dir ja hin. Wie kann ich aber mit ner Schleife Verzeichnisbäume mit Leerzeichen durchlaufen. Außer ls und find ist mir bisher nix eingefallen.
Muß ich vielleicht doch IFS mit " oder \n überschreiben?
Bleibt das dann für diese shell oder diesen Prozeß privat oder wird das global (i trau mi ned). Soifz

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
schnorrer
Titel: RE: Leerzeichen und ich schon wieder  BeitragVerfasst am: 21.07.2006, 13:51 Uhr



Anmeldung: 09. Jan 2006
Beiträge: 1721

warum kanos zeile funzt ist doch klar. "*.og".
" != '' != ' ' das geht leider nicht. das müßte so " " heißen. '' ist ein NULL zeichen. nix nada.

'%20' geht wieder.

Kano löst es mit dem Stern for der erweiterung. Und Stern heißt alle Zeichen in der kette.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel:   BeitragVerfasst am: 21.07.2006, 15:18 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

@Schnorrer: Daß for x in *.ogg expandiert wird, war mir schon klar. Davon gehen aber die Leerzeichen in den Dateinamen nicht weg. In der Expansion werden die Leerzeichen aber weder escaped, noch werden die Ausgaben in "" gesetzt. Beispiel: for x in *; do echo $x; done gibt brav alle Dateien und Verzeichnisse zeilenweise aus. Jetzt kommts:
for x in *; do echo $x && ls; done findet bei ls die Namen mit den Leerzeichen nicht.
Vielleicht vergeht das Brett vor meinem Hirn in den nächsten 2 Wochen. Bin Jetzt erst mal im Urlaub.
Besorgt mir bis dahin das ultimative AHA-Erlebnis. (bittebitte)

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
schnorrer
Titel:   BeitragVerfasst am: 21.07.2006, 18:26 Uhr



Anmeldung: 09. Jan 2006
Beiträge: 1721

ls hat schon immer ein Problem mit Leerzeichen gehabt.

for x in *;
do
echo $x && ls; ### gib nur etwas aus wenn die Expr == true ist. also kein LS, da echo $x ja nicht "ls" auspuckt.
### fahre ohne Ausgabe bei done fort.
done


for x in *;
do
echo $x,
ls;
done

das ist was du willst.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: @schnorrer  BeitragVerfasst am: 07.08.2006, 17:49 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

1. Tag nach dem Urlaub
öhömm. Nit böse sein, aber ich glaube, daß keines von den beiden das tut, was Du glaubst:
Das erste macht nach jedem echo einfach ls. Der return von echo ist ja zumindest solange TRUE, solange echo was ausgeben kann.
Das zweite schreibt nach der echo-Ausgabe einfach 'ls'. Klar. Was auch sonst. in dem Ausdruck echo $x, ls wird eben das $x expandiert. Sonst nix.
BTW: ls ist eines der tools, das gerade keine Probleme mit Leerzeichen hat.

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel: RE: @schnorrer  BeitragVerfasst am: 07.08.2006, 17:58 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16295

Du solltest meinen code nochmals angucken, in deinem Beispiel vergisst du IMMER die "" um "$x".
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Witwe_Bolte
Titel: da brichsch zamm  BeitragVerfasst am: 08.08.2006, 00:50 Uhr



Anmeldung: 09. Apr 2005
Beiträge: 203

oder so. Cool

ne Woche später:
WOW: for x in */*/* geht auch. Wahnsinn. Mächtig.
Äh: Wie tief geht denn das? Da wüßte ich gar nicht wonach ich googeln sollte.

_________________
unsensibel, aber empfindlich
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.