Problem Verständnis piping bash

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von NewbiePete, 02.09.2005.

  1. #1 NewbiePete, 02.09.2005
    NewbiePete

    NewbiePete Grünschnabel

    Dabei seit:
    02.09.2005
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo Forum,

    ich bin Anfänger, was das programmieren mit der Shell (bash) angeht.

    Ich möchte eigentlich nur ein kleines Problem lösen, aber es klappt nicht so wie ich es möchte.
    Folgendes Problem, ich habe einen Datenträger (bsw. CD) und auf diesem Datenträger sind nur wavefiles drauf (filename bsw. 1.wav, 2.wav usw). Nun möchte ich diese *.wav files auf meine Festplatte bekommen in ein bestimmtes Verzeichnis und sie dabei gleich umbenennen in 1.WAV, 2.WAV usw. Leider habe ich dieses nicht hinbekommen.

    Folgenden Lösungsansatz hatte ich probiert :

    cd /mnt/hdc
    ls > /home/Peter/test.txt

    less /home/Peter/test.txt

    1.wav
    2.wav
    3.wav
    4.wav
    5.wav

    So, nun dachte ich, ich kann mittels cp < test.txt *.WAV dieses Problem lösen. Leider sagt er mir darauf hin :

    cp: Fehlende Zieldatei
    „cp --help“ gibt weitere Informationen.

    habe ich das mit dem Piping nun falsch verstanden oder was ist falsch ??? Ich habe das so verstanden, das er jetzt das *.txt file ausliest (wo ja die Quelldateinamen drinstehen) und jeden Namen durch *.WAV ersetzt.

    Könnte mir da bitte jemand die Augen öffnen :-)

    Danke

    Gruß

    Peter
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    Ich verstehe nicht so ganz was du wirklich vor hast. Aber ich würde das über Kommandosubstitution lösen wenn ich ansatzweise verstehe was das soll.

    Also irgend so ein 'cp $(cat test.txt) *.wav' Konstrukt. Allerdings schwer zu sagen da ich es wirklich nicht ganz verstehe.
     
  4. #3 Wolfgang, 03.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Also wenn du die Dateien nur mit Zahlen + der Endung .wav umbenennen
    willst, kannst du dir den Weg über eine Datei sparen.
    Ich bin mir aber nicht sicher, ob das das ist was du wirklich willst.

    eine Lösung für og. Fall wäre:
    export z=0;for i in $( find /pfad/cd/ -iname "*wav");
    do mv $i "/Zielpfad/$z.${i##*\.}";
    z=$((z++));
    done

    Hier landet aber alles in einem Verzeichnis...
    GNU find und bash vorausgesetzt.

    Gute Infos zur Parameterexpansion
    Da kannst du dann auch einzelne Pfade ersetzen oder wie du es willst.
    Obiges funktioniert aber nicht, wenn irgendwelche hässliche Sonderzeichen im Dateinamen sind.
    Dann müsstest du mit der find-Option -print0 und xargs -0 arbeiten .

    HTH
    Gruß Wolfgang
     
  5. #4 NewbiePete, 05.09.2005
    NewbiePete

    NewbiePete Grünschnabel

    Dabei seit:
    02.09.2005
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,

    kann sein, das ich mich falsch ausgedrückt habe. Ich versuche es nochmal und hole etwas weiter aus.

    In der Firma steht ein IndustriePC, welcher für unsere automatischen Durchsagen (Maschinenstörungen) zuständig ist. Dieser PC erwartet die Wavefiles auf einer Datencd, auf dieser sind die Wavefiles mit Nummern abgelegt z.B. 1.WAV, 2.WAV usw.
    Das Problem ist jetzt, das es vorkommen kann, das die Dateiendung (*.WAV) großgeschrieben ist, aber der PC möchte diese aber kleingeschrieben haben, sonst erkennt er diese nicht. Diese Files werden automatisch mittels einem Programm der Fremdfirma auf den Linusrechner kopiert ( automatisch nach einlegen einer CD ). Das macht er auch einwandfrei, dummerweise kopiert er die Files mit der Endung *.WAV auch als *.WAV auf die Platte ( statt *.wav ) und somit fehlen uns ein paar Durchsagen, was nicht unbedingt gut ist. Nun dachte ich, ich mache das kopieren mit einem eigenen Script, und benenne diese Files gleich alle so um wie ich sie brauche ...

    Hoffe ich habe mich jetzt richtig ausgedrückt ...

    Gruß

    Peter
     
  6. oenone

    oenone Freier Programmierer[Mod]

    Dabei seit:
    22.08.2002
    Beiträge:
    599
    Zustimmungen:
    0
    Ort:
    Mannheim
    for i in *.WAV; do mv "$i" "${i%WAV}wav"; done

    auf bald
    oenone
     
Thema:

Problem Verständnis piping bash

Die Seite wird geladen...

Problem Verständnis piping bash - Ähnliche Themen

  1. grep verständnisproblem

    grep verständnisproblem: Hallo ich hatte ja lange keine anfängerfragen mehr :P Deswegen hier mal eine zu grep: Ich habe eine Textdatei: Hamburg Aschaffenburg...
  2. Verständnisproblem fseek und fgetpos

    Verständnisproblem fseek und fgetpos: Moin, ich würde gerne wissen wie man ANSI C gerecht in einer Datei navigiert. In meinem Buch "Linux/Unix Systemprogrammierung" von Helmut Herold...
  3. DNS Tunnel (Verständnis) Problemchen

    DNS Tunnel (Verständnis) Problemchen: Hallo Forum, ich habe ein kleines Problemchen, ich möchte einen DNS Tunnel aufbauen, Hotel.. bla bla bla. Dazu habe ich folgende Links...
  4. Bash Verständnissproblem

    Bash Verständnissproblem: Hallo, ich habe mir vor einigen Monaten folgende Notiz zum Test einer Null-Modem-Verbindung 2er Computer via Bash gemacht: Serial Port Null...
  5. Lisp, Verständnisproblem

    Lisp, Verständnisproblem: hallo, ich arbeite gerade den online LISP Kurs der UNI Trier durch. Die Aufgabe lautet ---------- 4. Definiere eine Funktion NREST, die...