Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: Dateien als Batch kopieren + umbenennen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20

    Dateien als Batch kopieren + umbenennen

    Hallo zusammen,

    folgende Problematik:

    Ich möchte von meinem Camcorder alle Dateien per Shellscript auf den Rechner laden und umbenennen. (*.mod --> *.mpg)
    Ich habe hierzu ein Mini-script erstellt:
    Code:
    #! /bin/sh
    mount /dev/sdd1
    
    cp /mnt/cam/sd_video/prg001/mov001.mod /mnt/sdc/home/Videos/mov001.mpg
    
    umount /dev/sdd1
    Soweit so gut, funktioniert auch, allerdings stets nur für eine einzelne Datei. Sobald ich das Script auf mehrere Dateien anwende ist dieses ohne Funktion:

    Code:
    cp /mnt/cam/sd_video/prg001/*.mod /mnt/sdc/home/Videos/*.mpg
    Sicherlich ist der "*" das Problem. Kann mir evtl. jemand einen Tipp geben, wie der Befehl aussehen muss, damit alle Dateien als Stapel kopiert und umgenannt werden?

    Viele Grüße und vielen Dank.
    Geändert von walleye (02.01.10 um 21:13 Uhr)

  2. #2
    Linux-Suchti Avatar von roadracer
    Registriert seit
    Feb 2009
    Ort
    Wolfenbüttel
    Beiträge
    759
    Ich weiß nicht ob das funktioniert, aber probiere doch mal
    Code:
    #!/bin/bash
    mount /dev/sdd1 
    
    cp /mnt/cam/sd_video/prg001/mov???.mod /mnt/sdc/home/Videos/mov???.mpg 
    
    umount /dev/sdd1
    EDIT:
    Funktioniert sicher auch nicht.
    Geändert von roadracer (01.01.10 um 19:16 Uhr)
    OpenSUSE 12.3 x86 XFCE 4.10

    Alle Rechtschreibfehler unterliegen der GFDL und dürfen so oder in veränderter Form genutzt und weiter gegeben werden.

  3. #3
    Milchmann Avatar von m.o.o.
    Registriert seit
    May 2003
    Beiträge
    1.192
    Dafür könnte man eine for-Schleife verwenden, also etwa
    Code:
    for file in /mnt/cam/sd_video/prg001/*.mod; do
        cp "$file" /mnt/sdc/home/Videos/`basename "$file"|sed 's/\.mod$/\.mpg/'`
    done
    Gruß, Florian
    Sie können sich nicht auf Ihre eigene Ignorier-Liste setzen.

  4. #4
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Ich würde die Dateien erst kopieren und dann umbenennen
    Code:
    cp /mnt/cam/sd_video/prg001/*.mod /mnt/sdc/home/Videos/
    rename .mod .mpg /mnt/sdc/home/Videos/*.mod
    Arch Linux / Intel Z77 / i5-3570K / 8GB PC3-1333 / SAMSUNG SSD 830 128GB

  5. #5
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20
    Schon mal vielen Dank für eure schnellen Antworten. Hab die Schleife in das script eingefügt und es rödelt nun schon seit einer ganzen Weile.
    Gibt es generell Vor -bzw. Nachteile zw. einer Schleife und der von buzz768 genannten Möglichkeit?

  6. #6
    Milchmann Avatar von m.o.o.
    Registriert seit
    May 2003
    Beiträge
    1.192
    Die Variante von buzz768 dürfte schneller ablaufen, da nur ein cp-Prozess gestartet wird, bei meiner Variante wird für jede zu kopierende Datei ein extra cp-Prozess gestartet und zusätzlich noch basename und sed ausgeführt.
    Außerdem ist die Lösung buzz768 unanfälliger gegen Leerzeichen in Dateinamen.

    Ich würde also den Vorschlag von buzz768 wählen.
    Sie können sich nicht auf Ihre eigene Ignorier-Liste setzen.

  7. #7
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20
    ok, beide Varianten funktionieren einwandfrei. Mit einer sache habe ich allerdings noch ein kleines Problem, ich hab noch paar Rückmeldungen (zB. echo "mounted") eingetragen. Funktioniert auch, wenn ich das Script aus der Konsole heraus aufrufe. Wenn ich die .sh Datei allerdings per Mausklick aufrufe, passiert nix. Ich hab versucht, im Script als erstes den xterm und set -x aufzurufen. xterm geht auch auf, nur leider bleibt dieser leer obwohl auch die anderen Befehle ausgeführt werden.
    Was müsste ich schreiben, damit per Mausklick die Konsole/xterm aufgeht und ich die Befehlsrückmeldungen sehe. ... falls das überhaupt so geht.

  8. #8
    Linux-Suchti Avatar von roadracer
    Registriert seit
    Feb 2009
    Ort
    Wolfenbüttel
    Beiträge
    759
    Ich denke mal, dass du nix siehst, da das Skript zu schnell abläuft.

    Häng' doch einfach das hier an dein Skript:
    Code:
    echo Fertig! Bitte ENTER drücken
    read null
    exit
    Das ist einfach der read-Befehl (siehe man read), mit der pseudo-Variable "null", der auf (eine Eingabe und) ENTER wartet.
    OpenSUSE 12.3 x86 XFCE 4.10

    Alle Rechtschreibfehler unterliegen der GFDL und dürfen so oder in veränderter Form genutzt und weiter gegeben werden.

  9. #9
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20
    Zu schnell kann eigentl. nicht sein, da ich schon vorher etliche "Wartezeiten" per "sleep 5" eingefügt hatte. Es muss eine andere Ursache haben. @roadracer: der Anhang wird leider auch ignoriert.

  10. #10
    Registrierter Benutzer Avatar von HirschHeisseIch
    Registriert seit
    Nov 2002
    Beiträge
    3.276
    Du rufst Dein Script nich zufällig in der Shell mit
    Code:
    sh script.sh
    auf, oder?
    Dann solltest Du noch Rechte setzen, damit das Script auch direkt ausgeführt werden darf...
    RTFM you have to, young padawan.

  11. #11
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20
    ich rufe das script in der konsole auf mit
    Code:
    ./scriptname.sh
    bzw. per Mausklick auf die Datei scriptname.sh
    Es wird ja auch ausgeführt, nur eben bei aufruf per Mausklick nicht interaktiv. d.h. die konsole bzw. xterm bleiben leer.

  12. #12
    Linuxer Avatar von HBtux
    Registriert seit
    Oct 2009
    Ort
    $HOME
    Beiträge
    315
    Mal eine Frage....

    Was soll Dein Script denn überhaupt ausgeben?
    Code:
    cp /mnt/cam/sd_video/prg001/*.mod /mnt/sdc/home/Videos/
    rename .mod .mpg /mnt/sdc/home/Videos/*.mod
    Diese Befehle geben auch nichts auf der Konsole aus...

    Probiere mal folgendes aus...
    Auf dem Desktop "Neue Verknüpfung zu Programm" erstellen.
    In der Befehlzeile gibst Du dann folgenden Code ein.
    Code:
    konsole -e /bin/sh -c "/PFAD_ZU_DEINEM_SCRIPT/scriptname.sh"
    Viele Grüße
    HBtux

  13. #13
    Registrierter Benutzer
    Registriert seit
    Oct 2009
    Beiträge
    20
    sorry, das was ich versuche zum laufen zu kriegen ist dies:
    Auf dem Desktop liegt eine ausführbare Datei scriptname.sh.
    Wenn ich diese anklicke, soll sich eine konsole oder ein xterm öffnen, wo mir dann die Meldungen angezeigt werden, welche ich mit dem echo-Befehl in das script eingefügt habe. Dieses sieht wie folgt aus:

    Code:
    #! /bin/sh
    mount /dev/sdd1
    sleep 3
    echo "mounted"
    sleep 2
    cp /mnt/cam/sd_video/prg001/*.mod /home/Videos/
    sleep 2
    echo "kopiert"
    rename .mod .mpg /home/Videos/*.mod
    sleep 2
    echo "umgenannt"
    sleep 2
    umount /dev/sdd1
    echo "ausgehangen"

  14. #14
    Sith Lord
    Registriert seit
    Apr 2009
    Beiträge
    1.438
    Ich vermute, wenn Du das Script über Dein komisches GUI startest, dann läuft es einfach im Hintergrund. Um etwas zu sehen, müsstest Du ein Terminal so starten, dass es das Script ausführt, ans Ende des Scripts ein "read" tun, damit es wartet, bis man Enter drückt, und bei den Befehlen überall die Verbosity einschalten, damit sie ausgeben, was sie tun.
    Das Starten mit einem Terminal könnte man wiederum in ein Script packen, aber vielleicht kannst Du das auch als Menüeintrag in Deinem Fenstermanager anlegen.


    Hier noch eine kleine Anregung (ist aber so schlechter Stil):
    Code:
    #! /bin/sh
    exec xterm -e '
    echo foo;
    dd if=/dev/zero of=/dev/null count=10;
    read'
    Geändert von oziris (02.01.10 um 22:52 Uhr)

  15. #15
    Linux-Suchti Avatar von roadracer
    Registriert seit
    Feb 2009
    Ort
    Wolfenbüttel
    Beiträge
    759
    HBtuxs Methode sieht vor dein Skript über eine Verknüpfung mit der Konsole zu starten.
    Dazu muss in der Verknüpfung der Befehl
    Code:
    konsole -e /bin/sh -c "/PFAD_ZU_DEINEM_SCRIPT/scriptname.sh"
    angegeben werden, wobei der Pfad natürlich noch angepasst werden muss.

    EDIT:
    Ich seh' gerade, dass oziris schneller war als ich. Trotzdem hoffe ich, dass mein Post doch was bringt.
    Geändert von roadracer (02.01.10 um 22:56 Uhr)
    OpenSUSE 12.3 x86 XFCE 4.10

    Alle Rechtschreibfehler unterliegen der GFDL und dürfen so oder in veränderter Form genutzt und weiter gegeben werden.

Ähnliche Themen

  1. dateien umbenennen
    Von Huhn Hur Tu im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 30.01.09, 16:54
  2. Dateien aus Liste automatisch kopieren
    Von fluppi im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 24.05.07, 12:19
  3. Samba und Dateien von XP Rechner kopieren
    Von Master2oo2 im Forum System installieren und konfigurieren
    Antworten: 0
    Letzter Beitrag: 08.09.04, 13:11
  4. Script zum Dateien umbenennen
    Von Fußhupe im Forum Linux Allgemein
    Antworten: 11
    Letzter Beitrag: 03.09.04, 15:27
  5. Login + Dateien kopieren
    Von HautzeBautze im Forum Linux in heterogenen Netzen
    Antworten: 2
    Letzter Beitrag: 26.05.02, 18:13

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •