[Erledigt] per shell namen kürzen ?

  • Hi,

    Hab hier Files mit folgendem Muster;

    Datum Zeit - Sender - Film.trp

    wie kann ich die in nem Script nur mit der shell zu;

    Film.ts

    kürzen (muss also immer alles von links weg bis zum zweiten Bindestrich (incl. dem Bindestrich und dem nachfolgenden Leerzeichen) wegschneiden.
    Gleichzeitig sollte in dem verbleibenden Namen falls noch Leerzeichen vorhanden diese durch Unterstriche erstetzt werden.

    Oder wärs besser zuerst ( vor dem Kürzen) alle Leerzeichen durch Unterstriche zu ersetzen (denn Leerzeichen sind da erstmal immer dabei)
    Am Besten in ner for Schleife.

    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

    Edited once, last by Bert (June 17, 2011 at 10:52 PM).

  • for old in *.tpl; do
    new=$(echo "$old"|sed 's/^.*- //' | sed -e 's/.tpl$/.ts/' -e 's/ /_/g')
    mv "$old" "$new"
    done

    untestet

    myVdr


    HW1: Dign X15e, 2xDVB-S2 Nova-HD, 2 GB Ram, 2TB HDD, 1,5TB HDD, 300GB HDD, Intel Dualcore
    SW1: vdr4fun-0.0.2

    HW2: ExWBreu scenic600+LP064V-TFT, 1xDVB-S/2/T(wechselnd),2 GB Ram,250GB HDD, Intel-Celeron
    SW2: vdr4fun-0.0.3b

    Compile-HW: Intel Core i7 K875, 8 GB Ram, 2TB HDD

  • Wie wäre es mit http://wiki.ubuntuusers.de/rename? Da musst du dir nur noch einen passenden Regex-Ausdruck basteln...
    Zum Testen könntest du mal so anfangen (-n verhindert das wirkliche Umbenennen und dient nur als Probelauf)

    Code
    rename -n 's/.*\ -\ .*\ -\ //;s/\.trp/\.ts/;s/\ /_/g' *.trp
    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • den muss ich mir mal merken, kannte ich nicht

    myVdr


    HW1: Dign X15e, 2xDVB-S2 Nova-HD, 2 GB Ram, 2TB HDD, 1,5TB HDD, 300GB HDD, Intel Dualcore
    SW1: vdr4fun-0.0.2

    HW2: ExWBreu scenic600+LP064V-TFT, 1xDVB-S/2/T(wechselnd),2 GB Ram,250GB HDD, Intel-Celeron
    SW2: vdr4fun-0.0.3b

    Compile-HW: Intel Core i7 K875, 8 GB Ram, 2TB HDD

  • Hi,

    Danke Jungs, aber ich will ja kein sed oder ähnliches verwenden.
    Habs aber selbst rausgefunden;

    EDIT !
    Das Script sieht jetzt so aus -> war noch nicht komplett gestern.

    Bash
    #!/bin/sh 
    cd /aufnahmedir
    for j in *; do
    		NAME=${j//*-*- }
    		mv "${j}" "${NAME// /_}"
    		FILM_NAME=${NAME// /_}
    		echo "Filmtitel = ${FILM_NAME}"
    done

    So wollt ich das.

    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

    Edited once, last by Bert (June 16, 2011 at 1:06 PM).

  • Zwar offtopic, aber was ich mich schon immer frage: Wer denkt sich sowas aus?

    s/.*\ -\ .*\ -\ //;s/\.trp/\.ts/;s/\ /_/g :

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Ich habe einen Anhaltspunkt, er trägt dieses T-Shirt.

    Gruß Dirch

    Mutterbrett: Foxconn g31mx mit Core2Duo E2200, 2GB / 1TB Hitachi / 240er GT weil 9500er gehimmelt / X10 / FF1.3 & Pinnacle PCTV Sat HDTV Pro USB / TV nur noch unter yaVDR und mit The Beast natürlich

    Dieser Beitrag wird 81 mal editiert, zum nächsten Mal von Dirch: Morgen, so um 20:39 :whistling:

  • Ich habe einen Anhaltspunkt, er trägt dieses T-Shirt.


    Garantiert nicht.
    Wenn du einen besseren Vorschlag hast, das in einem Einzeiler bei den Angaben zur Namensgebung von Bert zu erledigen (Seine Lösung würde z.B. über ein "-" im Sendername wie bei n-tv stolpern), lerne ich gerne dazu.

    Zwar offtopic, aber was ich mich schon immer frage: Wer denkt sich sowas aus?


    Ich, wenn ich etwas müde Regex-Ausdrücke bastle... (wenn du willst, erkläre ich es dir)

    Btw: die Lösung von uetzger verzichtet auf das escapen von einigen Zeichen (wie z.B. der Punkt bei der Ersetzung der Dateinamen) - ich dachte immer sed würde darauf bestehen ?(

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • :heuldoch :heuldoch

    Dagegen ist doch Japanische Kalligrafie ein Kinderspiel.

    Was solls, wenn es klappt wird es schon seine Berechtigung haben.

    :streichel Dirch

    Mutterbrett: Foxconn g31mx mit Core2Duo E2200, 2GB / 1TB Hitachi / 240er GT weil 9500er gehimmelt / X10 / FF1.3 & Pinnacle PCTV Sat HDTV Pro USB / TV nur noch unter yaVDR und mit The Beast natürlich

    Dieser Beitrag wird 81 mal editiert, zum nächsten Mal von Dirch: Morgen, so um 20:39 :whistling:

  • Hi all.
    Ich danke Euch natürlich allen hier für eure Lösungsvorschläge -> kann man ja immer wieder mal irgendwann gebrauchen :]

    seahawk1986

    Quote

    Wenn du einen besseren Vorschlag hast, das in einem Einzeiler bei den
    Angaben zur Namensgebung von Bert zu erledigen (Seine Lösung würde z.B.
    über ein "-" im Sendername wie bei n-tv stolpern), lerne ich gerne dazu.

    Danke für den Tipp, muss zugeben das hab ich noch nicht mal bedacht,
    aber habs grade getestet und funktioniert auch bei n-tv korrekt.
    Die Files haben ja zwischen den Bindestrichen immer auch noch ein Leerzeichen bei n-tv aber nicht.
    Wers probieren will;
    Einfach ein txt file z.b in:

    Quote

    20110503 1555 - n-tv - Cop Out - Geladen und Entsichert.trp


    umbenennen und das Script drauf loslassen.

    EDIT !
    Also das kapier ich jetzt auch nicht das klappt sogar wenn ich das File in;

    Quote

    20110503 1555 - n - tv - Cop Out - Geladen und Entsichert.trp

    umbenenne -> wieso ?


    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

    Edited 2 times, last by Bert (June 16, 2011 at 1:08 PM).

  • Die Files haben ja zwischen den Bindestrichen immer auch noch ein Leerzeichen bei n-tv aber nicht.


    Jetzt habe ich das ensprechende Leerzeichen in deinem Skript auch gesehen :unsch Ich nehme alles zurück und behaupte das Gegenteil.

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    Quote

    EDIT !

    Also das kapier ich jetzt auch nicht das klappt sogar wenn ich das File in;

    umbenenne -> wieso ?

    Also das ist mir jetzt klar
    So wies aussieht schneidet das Script alles bis zum letzten Bindestrich ab (egal wie viele Bindestriche da drinnen sind),
    und das ist nicht gut da auch öfter mal im reinen Titel Bindestriche vorkommen.
    (sich an den Bindestrichen allein zu orientieren bringts also nicht so ganz).
    Das Script sieht derweil so aus;

    Bash
    #!/bin/sh 
    cd /aufnahmedir
    for j in *; do
    		NAME=${j//*- }
    		mv "${j}" "${NAME// /_}"
    		FILM_NAME=${NAME// /_}
    		echo "Filmtitel = ${FILM_NAME}"
    done

    Hm, schwieriger als ich dachte -> an was sollte ich mich jetzt orientieren ?

    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

  • Ich habe das Skript mal probiert und bekomme eine Fehlermeldung "Bad substitution" und zwar beim ersten Film = Verzeichnis = %Bloodrayne.

    Da es dort nix zum entfernen gibt schein das Skript zu scheitern.

    Gruß
    Frodo

    Meine VDR Hardware

    YaVDR 0.6: Intel DQ67SW, Digital Devices Octopus Duo CI, 2x DD DuoFlex S2 V4, NVIDIA GT 610 (GF119), IMON VFD

    YaVDR 0.6: Asus Z170I PRO GAMING, NVIDIA GT 1030 (GP108-A), SilverStone ML02B-MXR, IMON LCD

    YaVDR 0.6: Intel DH67CF, TT S2-6400, NVIDIA GTX 1050 (GP107-A)

    YaVDR 0.5: Intel DH67BL, TT S2-6400, TT S2-3200, NVIDIA 210 (GT218)

    YaVDR 0.6: Zotac D2550ITX, NVIDIA GT 610 (GF119) onboard, IMON VFD

  • Das Skript kann ja schlecht wissen, wieviele Bindestriche zum Sendernamen gehören. Da hast du keine Chance, es sei denn, du speicherst z.B. alle Sendernamen mit Bindestrich im Skript und suchst dann gezielt im Dateinamen danach. Dafür verwendet man aber besser eine vernünftige Skriptsprache, z.B. Perl, Python oder Ruby.

    HFX mini, i3-4330, Asrock H97M, 2 x 2 GB DDR3-1600, OCZ Vertex 32GB, 2 x WDC Caviar Green 2 TB, Pioneer DVR-K06, Terratec Cinergy 1200 DVB-C, TechnoTrend C-1500, YARD mini USB mit OLED, Pulse-Eight USB - HDMI-CEC, Debian Jessie, Kodi

  • Hi,

    Quote

    Das Skript kann ja schlecht wissen, wieviele Bindestriche zum Sendernamen gehören.

    Ja ist klar aber es ist doch so das die Files in folgendem Muster vorliegen:

    Datum Zeit - Sender - Film.trp

    und wenn der Sender wie z.b: n-tv eben nen Bindestrich dabei hat so ist der
    nicht links und rechts von nem Leerzeichen umgeben.
    Würde dann so aussehen;

    Datum Zeit - n-tv - Film.trp

    Ich müsste also immer alles vom Anfang weg bis zum (incl.) zweiten Bindestrich gefolgt von nem Leerzeichen wegkürzen
    wär das nix als Orientierung -> müsste doch irgendwie funktionieren.

    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

  • Schau dir mal die Sender an - man kann dann sicherlich so matchen, dass diese immer sauber erkannt werden.
    Also deinen Beispieleintrag kann ich so in das gewünschte Format bringen:

    Code
    rename -n 's/\b[0-9]{8}\b\s\b[0-9]{4}\b\s-\s(\b[A-Z|a-z|0-9|-]*\b\s){0,6}//;s/^\s*-\s//;s/\s/_/g;s/\.trp/\.ts/' *.trp


    Mit diesen Dateien habe ich es mal getestet:

    Code
    ich@VDR:~/regex$ rename -n 's/\b[0-9]{8}\b\s\b[0-9]{4}\b\s-\s(\b[A-Z|a-z|0-9|-]*\b\s){0,6}//;s/^\s*-\s//;s/\s/_/g;s/\.trp/\.ts/' *.trp
    20110503 1555 - Das Erste HD - Cop Out - Geladen und Entsichert.trp renamed as Cop_Out_-_Geladen_und_Entsichert.ts
    20110503 1555 - n-tv - Cop Out - Geladen und Entsichert.trp renamed as Cop_Out_-_Geladen_und_Entsichert.ts


    Ist zwar kleinschrittiger ung irgendwie noch nicht optimal, aber es funktioniert :D

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi seahawk1986,

    Code
    rename -n 's/\b[0-9]{8}\b\s\b[0-9]{4}\b\s-\s(\b[A-Z|a-z|0-9|-]*\b\s){0,6}//;s/^\s*-\s//;s/\s/_/g;s/\.trp/\.ts/' *.trp


    Danke, ja das funktioniert :]

    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,

    So hab trotz der Lösung von seahawk1986 das Ganze ein bisschen weiterverfolgt.
    Das Script sieht nun so aus;

    Bash
    #!/bin/sh 
    cd /aufnahmedir
    for j in *; do
    		NAME=${j#*-*- }
    		mv "${j}" "${NAME// /_}"
    		FILM_NAME=${NAME// /_}
    		echo "Filmtitel = ${FILM_NAME}"
    done

    Hab das nun ein paar mal getestet und das scheint auch zu funktionieren.
    Hab z.b: ein TextFile in;

    22222222222222222222222225555555555 - n-tv - Cop Out - Geladen und Entsichert.trp

    umbenannt und raus kommt dabei dann das;

    Cop_Out_-_Geladen_und_Entsichert.trp

    Wenn das jetzt immer so klappt wär ich zufrieden.

    EDIT !
    Die ganze Umbenennungsprozedur sieht jetzt so aus;

    und bislang funktioniert das tadellos.

    Und nochmal Danke an Alle hier für Eure Vorschläge dazu -> kann ich bestimmt mal brauchen :]

    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

    Edited 3 times, last by Bert (June 19, 2011 at 3:18 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!