Ausgabe von grep und sed zum Umbenennen eines files ?

  • Hi,


    Ich muss das jetzt fragen, da ich hier einfach nicht weiter komme.


    Mit sowas;


    titel=$(grep ^T $1/info.vdr | sed s/"T "//g)
    name=$titel
    echo $titel


    oder auch mit;


    cat $1/info.vdr | grep "^T " | cut -b 3-
    echo "$titel"


    in nem Script kann man sich ja den Titel der in der info.vdr drinnen steht
    anzeigen lassen.


    Wenn ich nun irgendwo ein mpg z.b: 001.mpg liegen habe
    gibts da die Möglichkeit dieses 001.mpg in
    "die Ausgabe von obigen Befehlen.mpg" umzubenennen


    Ich meine wenn ich also mit obigen Befehlen folgenden Titel
    angezeigt bekäme;


    Into the Blue


    könnte ich dann mein 001.mpg in nem Script in Into the Blue.mpg umbenennen
    lassen ?
    Geht das überhaupt ?



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • mv 001.mpg "$titel.mpg"


    *?*


    Oder ich hab dein konkretes Problem nicht verstanden :)

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Hi, zirias


    Hm, hab jetzt grade das probiert;


    Code
    cat $1/info.vdr | grep "^T " | cut -b 3-
    echo "$titel
    mv /var/lib/vdrmedia/film/mpg/002.mpg "$titel.mpg"


    Danach ist aber kein *.mpg mehr auffindbar, hab hier echt keinen Plan


    Konkret aber gehts um das Script von gestern , das sieht
    derweil so wie folgt aus;




    Das ist jetzt nicht das ganze Script, und sicher auch kein schönes, aber soweit funkt
    das schon mal.
    Dabei gibts dann letztendlich ein;


    /var/lib/vdrmedia/film/mpg/002.mpg


    welches ich nun automatisch vom Script in "ausgelesenes aus der info.vdr.mpg"
    umbenennen lassen will.
    Also in das was mir das;


    Code
    cat $1/info.vdr | grep "^T " | cut -b 3-
    echo "$titel"


    am Monitor ausgibt.mpg


    Ich spiel daran seit zwei Tagen, und krieg aber leider nix hin.


    Die Ausgabe der zwei Befehlszeilen in ne Datei zu schreiben ist ja einfach, aber
    ich will mit dieser Ausgabe das mpg umbenennen lassen.
    Geht da eventuell was mit ner for Schleife ?


    Ich hoffe ich hab mich verständlich ausgedrückt.


    Das ganze brauch ich deshalb weil ich dann auf das mpg den dvdwizard
    drauf loslassen will, und in dessen Menü würde sonst statt dem Titel
    aus der info.vdr.mpg das 002.mpg stehen, und das sieht irgendwie nicht so gut aus.



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • $titel ist ja auch leer, weil niergends zugwiesen

    Code
    titel=$(cat $1/info.vdr | grep "^T " | cut -b 3-)
    echo "$titel
    mv /var/lib/vdrmedia/film/mpg/002.mpg "$titel.mpg"

    sollte bei der bash (die aber fast jeder benutzt) gehen.

    --seit 2010 kein vdr mehr in Betrieb--
    vdr 1.6.0 + eigene Patchkombination
    GNU/Linux 2.6.23.14 (Debian)
    DVB-S-Karte TT 1.6 (FF, Tuner defekt)
    DVB-S-Karte TT Budget (seit 4/09)
    DVB-T-Karte TT 1300
    DVB-T-USB-StickTerratec Cinergy T USB XE Rev. 2
    PC-Hauptplatine: MSI K8N Neo4-F, AMD 64 (seit 1/07)

  • Hi, Walter, dg9ep


    Danke, das funkt !


    Allerdings muss ich den ganzen Pfad zum titel.mpg angeben;



    mit nur;


    Code
    mv $file "$titel.mpg"


    wird das file scheinbar gelöscht.



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Nein, es wird ins aktuelle Verzeichnis verschoben. mv = move.


    Achja, erstmal noch ein useless-use-of-cat-award. *fg* Hatte ich im Original-Posting ganz übersehen :) "cat foo | grep ..." ist Unsinn, grep kann das File selbst lesen -> ein unnötiger fork() gespart.


    Außerdem können Shells auch ganz gut schneiden (klappt selbst mit der minimalistischen dash), also kann man sich auch den Aufruf von "cut" sparen:


    Code
    Tline = $(grep "^T " info.vdr)
    mv /path/to/001.mpg /path/to/${Tline#T }.mpg


    Wenn man hinten was abschneiden will übrigens ein % statt # setzen.

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Zitat

    Original von zirias
    Achja, erstmal noch ein useless-use-of-cat-award. *fg*


    Viel schlimmer ist aber ein

    Code
    more foo|grep bar

    Powered by Point of View ION330 und Mystique SaTiX-S2 Dual
    Geguckt wird auf einem 52PFL5605H/12 per HDMI mit Atmolight Quattro
    Audio optisch per Yamaha RX-V459 auf einem Teufel Concept P
    Non-TV content über XBMC und boblight
    Remote Harmony 525 durch Atric-IR
    Remote und Streaming mit Motorola XOOM und AndroVDR sowie Daroon Player
    Streaming auf ZBOX ID-81 und Desktop per streamdev
    All based on selfbuild OpenenELEC master


    Nebenbei noch ein par andere VDRs

  • Zitat

    Original von pinky666


    Viel schlimmer ist aber ein

    Code
    more foo|grep bar


    LOL, wer macht denn sowas :)


    Typisches useless-use-of-cat findet man normalerweise bei Kommandos, die tatsächlich nicht selbst ein file lesen können. Man vergisst allzugerne, dass es auch eine input redirection tut. Zum Beispiel sieht man gerne Dinge wie

    Code
    cat foo.txt | tr -d '\r' # primitives dos-2-unix


    Besser wäre

    Code
    tr -d '\r' <foo.txt # primitives dos-2-unix[


    fork() ist normalerweise teuer (ganz besonders auf win32, lass mal entsprechend komplexe Shell-scripts in Cygwin laufen *g*), also sollte man es vermeiden wo es geht. Deshalb bei Shellscripts am besten alles kritisch anschauen mit der Frage "Kann das die Shell nicht auch selbst?". Speziell bei Verwendung von "cat" ist das fast immer der Fall.

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Hi, Jungs


    Danke für die Infos !


    Ich habs jetzt Dank zirias so;


    Bash
    #!/bin/sh
    
    
    RECDIR=`dirname $1`
    TARGETDIR="/var/lib/vdrmedia/film/mpg"
    file="/var/lib/vdrmedia/film/mpg/[0-9][0-9][0-9].mpg"
    
    
    Tline=$(grep "^T " $1/info.vdr)
    mv $file "$TARGETDIR/${Tline#T }.mpg" > /dev/null


    und das klappt auch.


    Nur muss ich jetzt noch sehen wie ich die Leerzeichen aus
    dem ${Tline#T }.mpg (heisst in echt Die Simpsons.mpg)
    wegbekomme, da das File so nicht an Dvdwizard weitergegeben werden kann.



    EDIT!
    Das klappt auch ganz gut;


    Bash
    #!/bin/sh
    
    
    RECDIR=`dirname $1`
    TARGETDIR="/var/lib/vdrmedia/film/mpg"
    file="/var/lib/vdrmedia/film/mpg/[0-9][0-9][0-9].mpg"
    
    
    TITEL=$(grep ^T $1/info.vdr | sed s/"T "//g)
    mv $file "$TARGETDIR/$TITEL.mpg" > /dev/null



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

    Einmal editiert, zuletzt von Bert ()

  • Hi, Jungs


    Damit;


    Bash
    #!/bin/sh
    
    
    RECDIR=`dirname $1`
    TARGETDIR="/var/lib/vdrmedia/film/mpg"
    file="/var/lib/vdrmedia/film/mpg/[0-9][0-9][0-9].mpg"
    
    
    TITEL=$(grep ^T $1/info.vdr | sed s/"T "//g | tr ' ' _)
    mv $file "$TARGETDIR/$TITEL.mpg" > /dev/null


    klappts, und die Leerzeichen werden in _ umgewandelt.


    Will nur sichergehen, und ne Meinung von Euch Profis > kann ich das so belassen,
    oder gibts noch bessere Varianten ?



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Zitat

    Original von Bert
    Nur muss ich jetzt noch sehen wie ich die Leerzeichen aus
    dem ${Tline#T }.mpg (heisst in echt Die Simpsons.mpg)
    wegbekomme, da das File so nicht an Dvdwizard weitergegeben werden kann.


    Wieso nicht? Fehler in dvdwizard? Dann muss es wohl die letzte Variante sein. Ansonsten wären wie gesagt sed (und jetzt auch tr) unnötig.

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Hi, zirias


    Hm, ja so wies aussieht kann Dvdwizard nicht mit Leerzeichen, denn
    wenn ich in der Shellfolgenden Befehl absetze;


    Zitat

    /usr/bin/dvdwizard /pfad/zum/Die Simpsons.mpg


    kommt ne Fehlermeldung wie;


    /pfad/zum/Die not found


    aber jetzt klappts ja eh schon super mit den Tipps von Euch
    Danke nochmal,



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • ja, DAS kann ja auch nicht funktionieren, in Anführungszeichen muss das schon stehen, sonst wird es von der Shell an den Leerzeichen zerlegt.

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Hi,


    Zitat

    ja, DAS kann ja auch nicht funktionieren, in Anführungszeichen muss das schon stehen, sonst wird es von der Shell an den Leerzeichen zerlegt.


    Danke, werd ich dann mal testen !


    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Hi, zirias


    Hattest natuerlich recht > klappt so wie von dir gepostet !


    Habs jetzt so;

    Code
    if [ -e $TARGETDIR/[0-9][0-9][0-9].mpg ]; then 
    	TITEL=$(grep "^T " $1/info.vdr)
    	mv $FILE "$TARGETDIR/${TITEL#T }.mpg" > /dev/null
    fi


    Dann der Aufruf mittels dvdwizard dazu so;

    Code
    # AUTHORING mit Dvdwizard
    if [ -e $TARGETDIR/[0-9][0-9][0-9].mpg ]; then
    	$SVDRPSEND -d localhost "MESG ! Authoring xxx.mpg startet ! " && $DVDWIZARD -C $DVDWIZARDCONF $TARGETDIR/[0-9][0-9][0-9].mpg >> $LOGFILE
    else
    	$SVDRPSEND -d localhost "MESG ! Authoring ${TITEL#T }.mpg startet ! " && $DVDWIZARD -C $DVDWIZARDCONF "$TARGETDIR/${TITEL#T }.mpg" >> $LOGFILE
    fi


    und schon klappts auch mit Leerzeichen > Super schlanke Lösung :]



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Hi,


    Merkwürdig, das Beispiel aus meinem letzten Post klappt mit dvdwizard-0.5
    tadellos.


    Mit dvdwizard-0.5.1 gibts damit hingegen nen parse_error



    Gruss, Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!