Hi!
Also ich bin noch ziemlich unerfahren beim Programmieren, und ich habe mich mal an das Shell scripten gewagt, und jetzt stoße ich bei so etwas simplen an meine grenzen.
Wie kann ich alle Dateien in einem Verzeichnis ansprechen? Hier ist mein script:
#/bin/sh # all2wav.sh # Script that converts mp3, ogg or wma files in the current directory to wav TARGETDIR="" FILENAME="" EXT="" # check where to look for music files if [ -z "$1" ]; then TARGETDIR=`pwd` else TARGETDIR="$1" fi for FILENAME in $(ls "$TARGETDIR") do case "$FILENAME" in *.mp3) echo "file "$FILENAME" was an mp3 file." ;; *.ogg) echo "file "$FILENAME" was an ogg file." ;; *.wma) echo "file "$FILENAME" was a wma file." ;; *) ;; esac done exit 0
Ach und entschuldigt bitte diese leeren Variablenzuweisungen, ich hab nämlich mit C/C++ zu programmieren angefangen, und jetzt fühl ich mich ohne Variablendeklarationen nicht so wohl. 🙄
Ist mein erstes script, und weil ich schon an so etwas banalem wie "alles im Verzeichnis" angestoßen bin, hab ich mir gedacht ich schreib noch nicht weiter...
Also wenn die Dateinamen zusammenhängend sind, gibt es überhaupt keine Probleme. Probleme treten nämlich dann auf, wenn in meinen Dateinamen Leerzeichen vorkommen. Und das ist in so ziemlich jeder Musikdatei auf meinem PC der Fall!
Denn wenn Leerzeichen im Dateinamen vorkommen, dann wird die schleife nicht so oft durchlaufen wie es Dateien im Verzeichnis gibt, sondern so viele male wie insgesamt Wörter in den Dateinamen enthalten sind.
Ich habe versucht $(ls "$TARGETDIR") in Anführungszeichen zu setzen, allerdings mit dem Ergebnis, dass dann die schleife nur ein mal durchlaufen wurde und da enthielt $FILENAME dann die gesamte Ausgabe von ls.
Tut mir leid für so eine banale Frage, aber ich bin als anfänger ein bisschen ratlos.
Ich hab sogar ein C- Programm geschrieben, das eine beliebige Zeile einer Textdatei ausgibt, weil ich mir dachte so könnts gehn aber ich hab das Gefühl, dass das ganz und gar keine gute Lösung ist.
ein man -ls hat nicht geholfen, genauso wenig wie eine google- suche, und (ich gebs zu so genau hab ich nicht geschaut) selbst im "Advanced Bash Scripting Guide" habe ich nichts dergleichen gefunden.
Könnte mir vielleicht jemand weiterhelfen?