delmic
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Hallo Ubuntu Profis, mein Problem ich habe viele Dateien (Bilderverzeichnis) > 1000 Es gibt einen Ordner da stehen alle Bilder drin (zu einem Thema). Darunter habe ich mehrere Ordner in denen stehen nur symbolische Verknüpfungen auf diese Bilder. Die Unterordner sind jeweils Schnittmengen aus dem kompletten übergeordneten Verzeichnis. Jetzt wurde die übergeordnete Verzeichnisstruktur geändert und die Links funktionieren nicht mehr. Die wieder einzeln zu sortieren wäre ein sehr großer Aufwand. Kann ich die irgendwie anpassen? Vielen Dank
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
delmic schrieb:
mein Problem ich habe viele Dateien (Bilderverzeichnis) > 1000 Es gibt einen Ordner da stehen alle Bilder drin (zu einem Thema). Darunter habe ich mehrere Ordner in denen stehen nur symbolische Verknüpfungen auf diese Bilder. Die Unterordner sind jeweils Schnittmengen aus dem kompletten übergeordneten Verzeichnis.
Ich nehme an Du meinst "Teilmengen". So, wie ich es verstehe, enthält der übergeordnete Ordner Bilder und die Unterordner enthalten nur Softlinks zu einem Teil der Bilder in dem übergeordneten. Ist das korrekt?
Jetzt wurde die übergeordnete Verzeichnisstruktur geändert und die Links funktionieren nicht mehr. Die wieder einzeln zu sortieren wäre ein sehr großer Aufwand. Kann ich die irgendwie anpassen?
Du meinst, "automatisiert anpassen" - händisch geht natürlich immer - automatisiert wahrscheinlich auch. Die Millionen-Dollar-Frage ist natürlich
Ohne mehr Details können wir da wenig tun.
|
delmic
(Themenstarter)
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Die Links beziehen sich auf den absoluten Pfadnamen.
Es wurde eine zusätzliche Verzeichnisebene eingefügt.
siehe Bildschirmfoto.
- Bilder
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
Probier mal find /media/michael/SDA/Bilder/2016/ -type l -exec ln -sf /media/michael/SDA/Bilder/2016/ {} + Ein Test mit einer kopierten Teilmenge wäre vermutlich angebracht.
|
delmic
(Themenstarter)
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Hab das mal probiert und natürlich vorher ein Backup vom Verzeichnis angelegt.
Hat leider nichts gebracht:
| michael@TPE530:~$ find /media/michael/SDA/Bilder/2016/ -type l -exec ln -sf /media/michael/SDA/Bilder/2016/ {} +
ln: das angegebene Ziel '/media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_E/ P1080394.jpg' ist kein Verzeichnis
ln: das angegebene Ziel '/media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_E/ P1080245.jpg' ist kein Verzeichnis
michael@TPE530:~$
|
An den Links oder Dateien etc. hat sich nichts geändert. Warum ausgerechnet diese beiden jpg. angemault werden? Exakt gleich zu allen anderen Dateien und Verknüpfungen.
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
Stimmt, geht nicht. Da mußt du wohl auf rklm warten, der zaubert bestimmt was aus dem Hut.
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
Folgende Idee: Stelle den Ursprungszustand der Ordnerstruktur wieder her, so daß alle Links funktionieren Suche per find alle symbolischen Links und schreibe sie in eine Textdatei
find /media/michael/SDA/Bilder/ -type l -exec ls -l >> /home/michael/links.txt {} \;
Die Datei sollte dann ungefähr so aussehen (Beispielzeile):
lrwxrwxrwx 1 michael michael 92 Jul 18 15:48 /media/michael/SDA/Bilder/link2 -> /media/michael/SDA/Bilder/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_E/bild2.png
Das sollte dann so aussehen:
lrwxrwxrwx 1 michael michael 92 Jul 18 15:48 /media/michael/SDA/Bilder/2016/link2 ->/media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_E/bild2.png
find /media/michael/SDA/Bilder -type l -exec rm {} \;
cat links_neu.txt | while read line;do ln -s -v $(echo $line | awk '{print $11}' && echo $line | awk '{print $9}');done Hat hier bei einem Test funktioniert. Ich hoffe, da haben sich jetzt nicht zu viele Kopierfehler eingeschlichen ...
|
delmic
(Themenstarter)
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Hallo,
endlich habe ich die Zeit gefunden das auszuprobieren.
Vielen Dank erst mal. Beim letzten Command bekomme ich leider eine Fehlermeldung: ln: Ungültige Option – >
„ln --help“ liefert weitere Informationen. Bis dahin hat es funktioniert. Viele Grüße Michael
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Hallo zusammen! Wenn ich euch richtig verstehe, geht es doch nur darum die Links relativ zu machen? ln bietet da die Option --relative an. Ich habe das mal als Testablauf gemacht, um das zu verdeutlichen: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | schiggn@desktop[/tmp]› mkdir Bilder
schiggn@desktop[/tmp]› mkdir LinksZuBildern
schiggn@desktop[/tmp]› for i in {1..10}; do touch Bilder/originalBild_$i; ln -s /tmp/Bilder/originalBild_$i /tmp/LinksZuBildern/linkauf_$i; done
schiggn@desktop[/tmp]› tree Bilder
Bilder
├── originalBild_1
├── originalBild_10
├── originalBild_2
├── originalBild_3
├── originalBild_4
├── originalBild_5
├── originalBild_6
├── originalBild_7
├── originalBild_8
└── originalBild_9
0 directories, 10 files
schiggn@desktop[/tmp]› tree LinksZuBildern/
LinksZuBildern/
├── linkauf_1 -> /tmp/Bilder/originalBild_1
├── linkauf_10 -> /tmp/Bilder/originalBild_10
├── linkauf_2 -> /tmp/Bilder/originalBild_2
├── linkauf_3 -> /tmp/Bilder/originalBild_3
├── linkauf_4 -> /tmp/Bilder/originalBild_4
├── linkauf_5 -> /tmp/Bilder/originalBild_5
├── linkauf_6 -> /tmp/Bilder/originalBild_6
├── linkauf_7 -> /tmp/Bilder/originalBild_7
├── linkauf_8 -> /tmp/Bilder/originalBild_8
└── linkauf_9 -> /tmp/Bilder/originalBild_9
0 directories, 10 files
schiggn@desktop[/tmp]› find LinksZuBildern -type l -exec ln -frs {} {} \;
schiggn@desktop[/tmp]› tree LinksZuBildern/
LinksZuBildern/
├── linkauf_1 -> ../Bilder/originalBild_1
├── linkauf_10 -> ../Bilder/originalBild_10
├── linkauf_2 -> ../Bilder/originalBild_2
├── linkauf_3 -> ../Bilder/originalBild_3
├── linkauf_4 -> ../Bilder/originalBild_4
├── linkauf_5 -> ../Bilder/originalBild_5
├── linkauf_6 -> ../Bilder/originalBild_6
├── linkauf_7 -> ../Bilder/originalBild_7
├── linkauf_8 -> ../Bilder/originalBild_8
└── linkauf_9 -> ../Bilder/originalBild_9
0 directories, 10 files
schiggn@desktop[/tmp]›
|
Ist es das, was ihr braucht?
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
delmic schrieb: Beim letzten Command bekomme ich leider eine Fehlermeldung: ln: Ungültige Option
Hm, die Optionen -s (--symbolic) und -v (--verbose) sollte ln eigentlich kennen. Vielleicht stimmt die Übergabe von Zieldatei (Spalte 11 der Textdatei) und Link-Name (Spalte 9 der Textdatei) nicht? Zeig das Ganze doch mal als Trockenlauf mit echo ausgegeben:
cat links_neu.txt | while read line;do echo $(echo $line | awk '{print $11}' && echo $line | awk '{print $9}');done ChickenLipsRfun2eat schrieb: Ist es das, was ihr braucht?
Was delmic braucht, muß er beantworten. Ich brauche nichts ☺
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
Nachtrag: Natürlich nur mit einer gekürzten Datei "links_neu.txt", 5 Zeilen sollten reichen.
|
delmic
(Themenstarter)
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Bringt ohne -v -s keine Fehlermeldungen mehr. Aber leider werden auch keine Links erstellt. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | michael@TPE530:~$ cat links_neu_test.txt | while read line;do echo $(echo $line | awk '{print $11}' && echo $line | awk '{print $9}');done
-> /media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_L/
-> /media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_L/
-> /media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_L/
-> /media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_L/
-> /media/michael/SDA/Bilder/2016/20160617_Urlaub_Gardasee_komplett/20160617_Urlaub_Gardasee_L/
michael@TPE530:~$ cat links_neu_test.txt | while read line;do ln -s -v $(echo $line | awk '{print $11}' && echo $line | awk '{print $9}');done
ln: Ungültige Option -- >
„ln --help“ liefert weitere Informationen.
ln: Ungültige Option -- >
„ln --help“ liefert weitere Informationen.
ln: Ungültige Option -- >
„ln --help“ liefert weitere Informationen.
ln: Ungültige Option -- >
„ln --help“ liefert weitere Informationen.
ln: Ungültige Option -- >
„ln --help“ liefert weitere Informationen.
ln: Fehlender Dateioperand
„ln --help“ liefert weitere Informationen.
|
Mit dem Umstellen auf relative Links, könnte auch funktionieren. Muss nur die ausgangspoition nochma herstellen.
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3532
|
Zeig doch mal bitte jeweils die ersten 5 Zeilen von links.txt und links_neu.txt.
|
delmic
(Themenstarter)
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Jetzt hat es funktioniert. Fehlermeldung aus -v -s und keine Links erstellt, weil zwischen Verzeichnisname und Dateiname ein Leerzeichen war, das nicht sofort aufgefallen ist, genau da war auch der Zeilenumbruch. Vielen Dank an dingsbums
|