[gefunden]shellscript zum erzeugen von softlinks gesucht

  • Huhu,


    ich bin auf der Suche nach einem Script was mir Softlinks automatisch erstellt.


    Situation: Ich habe Filme im mpg Format in unterschiedlichen Verzeichnissen. zB /mnt/1/1/1.avi, /mnt/1/2/2.avi, /mnt/2/1/3.avi etc. und würde gerne Softlinks in EINEM Verzeichnis zu jeden Film haben.


    Könnte mir jemand nen guten Ansatz (oder fertiges Script :D ) geben?


    Grüße
    sphere

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

    Einmal editiert, zuletzt von sphere ()

  • Geht schief bei gleichen Dateinamen - der muss halt unique sein.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Die Dateinamen sind unique, ich hätte bessere Beispiele benutzen sollen :D


    Also hier konkret einen Auszug:
    /mnt/1/18/Interview mit einem Vampir/Interview mit einem Vampir.mpg
    /mnt/1/18/Love Song for Bobby Long/Love Song for Bobby Long.mpg
    /mnt/1/19/Jeepers Creepers/Jeepers Creepers.mpg


    Ich habe also in dem Verzeichnis "1" Verzeichnisse von 1-20. in diesen sind Verzeichnisse die wie der Film heissen, undzwar jeweils 10.
    In dem Verzeichnis "2" gibt es die Verzeichnisse 21-40. In diesem gibt es auch wieder 10 Verzeichnisse die wie der jeweilige Film heissen.


    Klingt kompliziert, is auch so ;) deswegen will ich die ja per Skript virtuell in EINEM Verzeichnis anzeigen.


    Also das ich im Verzeichnis "SoftLinks" zB einen Link zu JEDEN mpg unterhalb von /mnt bekomme.


    sparkie: Ich probier mal mit deiner Idee rum...
    Ich war eher in Richtung "find /mnt/1/ -name *.mpg" und dann die Ausgabe zeilenweise mit ls bearbeiten" unterwegs..


    Grüße und schonmal Danke :)

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • Ein Ansatz wäre , ersma die file zu finden und gleichzeitig den Pfadnamen parat zu haben .


    find /tmp/*/*/*.mpg


    spuckt dir die files mit komplettem Pfadnamen mit der Endung mpg aus .
    Anschließend mußte dann nur noch den reinen Filenamen isolieren , um nen Aussagefähigen , lesbaren Linknamen zu haben ( da führen mehrere Wege zum Ziel )
    und den Link erstellen .


    HJS

  • dann einfach so:

    Code
    find ../mnt -name \*.mpg -print | awk '{
        gsub(" ", "\\ "); printf "ln -s " $0 " "; gsub("^[/.]*", ""); gsub("/", "_"); print
    }'

    der macht Unique-Files nach entsprechender Ersetzung. Das Script erzeugt erst ein Script, das nach Ueberpruefung auch ausgefuehrt werden kann.

  • Oh mann ;)


    Ok nach 10 Minuten hab ich das Script verstanden :D


    Ich hab dafür mal ne Testumgebung geschaffen und es darauf geändert:



    Das Skript auf /test geändert liefert mir:

    Code
    ln -s /test/1/alpha.mpg test_1_alpha.mpg
    ln -s /test/1/beta.mpg test_1_beta.mpg
    ln -s /test/2/gamma.mpg test_2_gamma.mpg
    ln -s /test/2/delta.mpg test_2_delta.mpg
    ln -s /test/2/3/epsilon.mpg test_2_3_epsilon.mpg


    Sehr schöne Sache :)
    Nur, das mit den Unique-Files hab ich aber garnicht als Problem, im Gegenteil ich wollte eigentlich das mir der Pfad komplett, also bis zum letzten Slash alles weggenommen wird.


    Aber schonmal Danke :)


    Grüße

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • Zitat

    Nur, das mit den Unique-Files hab ich aber garnicht als Problem


    no problem Sir! Kleine Abwandlung damit alles vor dem letzten '/' weggelassen wird:

    Code
    find ../mnt -name \*.mpg -print | awk '{
        gsub(" ", "\\ "); match($0, "/([^/]+)$", a); print "ln -s " $0 " " a[1]
    }'


    wenn alles zur Zufriedenheit funktioniert, kann es gleich automatisch ausgefuehrt werden. Bestehende Softlinks ueberschreibt er auch gleich mit 'ln -f' Option:

    Code
    find ../what_ever/mnt -name \*.mpg -print | awk '{
        gsub(" ", "\\ "); match($0, "/([^/]+)$", a); print "ln -sf " $0 " " a[1]
    }' | sh -s
  • Zitat

    Originally posted by sphere
    Nur, das mit den Unique-Files hab ich aber garnicht als Problem, im Gegenteil ich wollte eigentlich das mir der Pfad komplett, also bis zum letzten Slash alles weggenommen wird.


    So wirds lesbarer ...



    Die Variablen quelle und ziel entsprechend benennen - und gut is ;)


    HJS

    Working VDR : VDR-1.4.6 - ACPI/NVRAM Wakeup - working on hjslfs

    Einmal editiert, zuletzt von hjs ()

  • Also jetzt schalte ich endgültig ab...


    Es funktionert!!! Ich habe zwar keine Ahnung warum, aber es funktionert! :bounce1


    Vielen Dank und nen schönen Sonnigen Tag wünsch ich euch...


    Grüße
    sphere

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • hjs:
    Auch dein Skript funktioniert, Danke :)


    Ich benutz trotzdem das von sparkie, weil es diesem egal ist, in welcher Verzeichnistiefe sich die Filme befinden, und ich war bei der (bescheurten) Einordnung meiner Filme nicht konsequent genug...
    Wahrscheinlich ist es deinem Skript auch bei einer Änderung (für die ihr 2 sec braucht, ich ne stunde) auch egal, aber jetzt bitte keine Mühe mehr ;)


    Grüße
    sphere

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • Zitat

    Originally posted by sphere
    Also jetzt schalte ich endgültig ab...


    Wieso ? :D


    Zitat


    Es funktionert!!! Ich habe zwar keine Ahnung warum, aber es funktionert! :bounce1


    abba nich mit meinem Script - .new hätteste gegen .mpg tauschen müssen :gap


    HJS

  • Also das hab ich schon gemerkt ;)


    /$quelle/*/*.mpg >/tmp/films
    So funzt es (Einen Pfad weniger und new->mpg), aber dann -wie gesagt- stolperte ich über meine inkonsequente Einordnung ;)


    Grüße
    sphere

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • Zitat

    Originally posted by sphere
    Also das hab ich schon gemerkt ;)


    Na dann ;D


    Zitat


    /$quelle/*/*.mpg >/tmp/films
    So funzt es (Einen Pfad weniger und new->mpg), aber dann -wie gesagt- stolperte ich über meine inkonsequente Einordnung ;)


    Läßt sich auch absuchen , abba du hast ja schon deine Lösung ... :)


    HJS

Jetzt mitmachen!

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