viele symbolische Links erstellen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von UllaUffz, 25.02.2009.

  1. #1 UllaUffz, 25.02.2009
    Zuletzt bearbeitet: 26.02.2009
    UllaUffz

    UllaUffz Eroberer

    Dabei seit:
    25.01.2006
    Beiträge:
    57
    Zustimmungen:
    0
    viele symbolische Links erstellen [gelöst]

    Hi,
    ich habe vor alle Dateien eines bestimmten Typs (Bilder) in ein Verzeichnis zu verlinken. Die etwa 5000 Bilder befinden sich in ca. 600 Verzeichnissen.
    Die Bilder aus der Verzeichnisstruktur auslesen klappt. Eine Datei mit allen Dateien anzulegen auch. Allerdings scheitere ich daran auf die Dateien in der Liste Links zu erstellen. Die Manpage von "ln" hilft mir leider nicht weiter und Google bisher auch nicht. Deshalb die (erstmal erste) Frage:
    Wie kann ich "ln" dazu bringen auf alle Einträge aus meiner Liste einen Link zu setzen?

    Gerne auch rtfm (Welches?) oder eine Idee nach was ich bei Google weitersuchen kann.
    Wenn Informationen fehlen reiche ich diese gerne nach.
    Oder bin ich auf dem völlig falschen Weg und meine Idee kann nicht klappen? Ausgangsproblem: http://www.unixboard.de/vb3/showthread.php?t=41739

    Danke für die Hilfe

    PS: Ich hoffe der Post ist hier in der richtigen Forumsabteilung.
     
  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. #2 daboss, 25.02.2009
    Zuletzt bearbeitet: 25.02.2009
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Wenn du's eh schon als Liste o.ä hast, dann machs halt mit
    Code:
    BILDLISTE=$(cat /die/Datei/in_der_die_Bilderliste_aufgefuehrt/ist);
    IFS="\n"; #oder wie auch immer die einzelnen Dateien
                  # in der Liste voneinander getrennt sind
    for BILD in $BILDLISTE; do
     ln -s $BILD;
    done;
    
    im gewünschten Verzeichnis oder so?
     
  4. #3 UllaUffz, 25.02.2009
    UllaUffz

    UllaUffz Eroberer

    Dabei seit:
    25.01.2006
    Beiträge:
    57
    Zustimmungen:
    0
    Danke!

    Ich habe jetzt folgendes gemacht (nach viel lesen und testen - ja, wenn man weiss wie geht das bestimmt einfacher...):

    Code:
    du -a /Pfad-zu-den-Bildern | tr '[:blank:]' '\n' | grep -i jpg > fertigzumauslesen
    Das funktioniert so lange keine Leerzeichen in den Namen sind. Ich musste naemlich bei der du-Ausgabe die Dateigröße wegmachen.

    und danach das Script:
    Code:
    BILDLISTE=$(cat Verzeichnis-der-Bilder/fertigzumauslesen);
    for BILD in $BILDLISTE; do
     ln -s $BILD;
    done;
    Mit dem field seperator hat er nach jedem "n" getrennt... keine Ahnung warum. Ohne gehts.

    Jetzt habe ich nur gemerkt, dass einige Bilder die gleichen Namen haben (Kamera hat nach 10 000 Bildern wieder von vorne angefangen zu zaehlen). Deshalb die Folgefrage:

    Gibt es eine Möglichkeit dem Script beizubringen dass es an den Dateinamen eine Zahl (1) anhängt, wenn der Dateiname schon existiert?
     
  5. #4 Gott_in_schwarz, 26.02.2009
    Zuletzt bearbeitet: 26.02.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    wtf?
    Wie wärs mit "ls -1 > foo"? Oder gleich find?
    Oder ist die Größe der Dateien von Belang?

    Das würde funktionieren:
    Code:
    IFS=$'\n'     # in bash zumindest
    # oder
    IFS="
    "
    Auch sollte man den vor der Variablenzuweisung setzen, und dann am Besten als Array. ODER, man lässt den Zwischenschritt einfach ganz weg und iteriert gleich in einer while-read Kombo über die Dateinamen.

    Ja? Einfach irgendeinen Counter mitlaufen lassen. Mit
    Code:
    [ -e "$file" ]
    kann man testen, ob der Dateiname in file eine existente Datei ist. (Hmpf, Formulierung.)
    Lektüre
    Code:
    man test
    edit: 'IFS="`echo`"' funktioniert irgendwie doch nicht. Touche.
     
  6. #5 saeckereier, 26.02.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Hmm, hard links oder symbolische Links?
    Egal, Grundprinzip:
    Code:
    cd /zielordner
    find /oberordner/aller/bilder -iname "*jpg" -exec ln -s {} . \;
    
     
  7. #6 Gott_in_schwarz, 26.02.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    @saeckereier
     
  8. #7 UllaUffz, 26.02.2009
    Zuletzt bearbeitet: 26.02.2009
    UllaUffz

    UllaUffz Eroberer

    Dabei seit:
    25.01.2006
    Beiträge:
    57
    Zustimmungen:
    0
    Ich sag ja:
    "wenn man weiss wie geht das bestimmt einfacher..."

    Daran sieht man, dass ich es nicht weiss ;-). Ich war ja schon froh irgend eine Lösung hinzubekommen.

    Mit "find" kam ich nicht zurecht. Das wird jetzt dank dem Beispiel einfacher. Bei "ls" wusste ich nicht wie ich die Ausgabe in eine Form bringe, dass der Pfad zum Bild in der Art "/Ordner/Unterordner/Bild.jpg" dargestellt wird. Also bin ich auf "du" ausgewichen.
    Das mit dem Counter werd ich testen.

    Ich werd den Thread auf gelöst setzen. Nochmal vielen Dank für eure Hilfe! Ich hab heute (hoffentlich) wieder viel gelernt :-).
    Spannenderweise hab ich auch gelernt, dass sich mein eigentliches Problem anders gelöst hat. Xscreensaver nutzt jetzt doch alle Unterverzeichnisse... warum auch immer das Letztens nicht ging... aber das an anderer Stelle.
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 saeckereier, 26.02.2009
    Zuletzt bearbeitet: 26.02.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    @Gott_in_schwarz: Hatte ich überlesen, das find wollte ich trotzdem ganz gerne anbringen..

    @UllaUffz: Eine Möglichkeit wäre auch, einfach die md5 hashes der Dateien statt der Namen zu nehmen, wird ein wenig aufwändiger. Eine andere Möglichkeit, wenn die Kamera EXIF Infos speichert, wäre die Bilder in Datum und Uhrzeit ihrer Erstellung umzubenennen. Letzteres mache ich mit meinen Fotos von der digitalen Spiegelreflex,d damit ich die nachher ordernltich geordnet habe.. Wenn du willst, kann ich dir dazu das Skript nochmal raussuchen..
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Ach ja, und das es symbolische Links sein sollen hab ich mittlerweile der Überschrift entnommen, ist nich' mein Tag heute :-)
     
  11. #9 UllaUffz, 26.02.2009
    UllaUffz

    UllaUffz Eroberer

    Dabei seit:
    25.01.2006
    Beiträge:
    57
    Zustimmungen:
    0
    @saeckereier
    Das wäre nett, wenn du das script raussuchen könntest. Ist zwar OT, aber das würde mich für die Verwaltung meiner Photos interessieren :-).
    Danke.
     
Thema:

viele symbolische Links erstellen

Die Seite wird geladen...

viele symbolische Links erstellen - Ähnliche Themen

  1. Ubuntu LTS: Viele Sicherheitslücken ungepatcht

    Ubuntu LTS: Viele Sicherheitslücken ungepatcht: Einem Bericht des Computer-Magazins »ct« zufolge kann die von »Ubuntu LTS« versprochene Langzeitpflege nicht das halten, was sie verspricht. Viele...
  2. Gnome 3.20 verbessert viele Apps und bietet benutzbare Wayland-Integration

    Gnome 3.20 verbessert viele Apps und bietet benutzbare Wayland-Integration: Die auf den Tag sechs Monate nach Gnome 3.18 jetzt veröffentlichte Version Gnome 3.20 bringt Verbesserungen bei den Applikationen, bei Wayland und...
  3. Viele Linux-Router mit Sicherheitslücken

    Viele Linux-Router mit Sicherheitslücken: Forscher von der Carnegie Mellon University und der Universität Boston haben viele Linux-Router mit automatisierten Werkzeugen untersucht und...
  4. IDS Suricata 3.0 mit vielen Verbesserungen

    IDS Suricata 3.0 mit vielen Verbesserungen: Das Entwicklerteam rund um die Open Information Security Foundation (OISF) hat sein Netzwerk-Einbruchserkennungs- und Verhinderungssystem...
  5. Keepassx 2.0 mit vielen Neuerungen

    Keepassx 2.0 mit vielen Neuerungen: Der freie Passwortmanager Keepassx ist knapp dreieinhalb Jahre nach dem initialen Start in einer stabilen Version 2.0 freigegeben worden. Die...