sh Skript: Links automatisieren ?

Post Reply
Message
Author
linker.so

sh Skript: Links automatisieren ?

#1 Post by linker.so »

Hallo,

ich habe folende Verzeichnisstruktur:

ALLE
ort1
ort2
ort3

Unterhalb von "ortx" befinden sich Bilder. Jetzt würde ich gerne per Skript von jedem Bild in "ortx" einen Softlink nach "ALLE" machen. Punkt ist, die Ordner "ortx" haben natürlich beliebige Namen.

find hat mich zum Wahnsinn getrieben, da ich "{}" nicht zerlegen kann.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

Wenn unter den ortx-Verzeichnissen keine weiteren Unterverzsichnisse mehr sind, ist es einfach:

Code: Select all

#!/bin/bash

cd ALLE
for DIR in ../ort* ; do
    ln -s $DIR/* .
done

ln legt dann für jede Datei in ort*/ einen Link im aktuellen Arbeitsverzeichnis an, welches ALLE ist.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

linker.so

#3 Post by linker.so »

cd ALLE
find .. -type f -exec ln -s {} . \;

Ich bin ein Trottel. Ich hatte die find Syntax falsch und einen groben Denkfehler, was ln angeht. Deine Lösung übersieht, das "ort*" beliebige Namen haben kann, also z.B. hamburg, münchen, Kiel, Nürnberg

Natürlich Danke für Deine Hilfe

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#4 Post by jochen »

Nu je, wenn Du nur von ort1, ort2, ortx schreibst, dann kann man das schon so für bare Münze nehmen, oder? Deine Lösung funktioniert, ruft aber pro Datei ein ln-Kommando auf. Bei meiner Lösung wird pro Verzeichnis ein ln-Kommando ausgerufen; je nachdem, wieviele Dateien so in einem Verzeichnis liegen können, kann das schon einen echten Performance-Unterschied machen.

Code: Select all

#!/bin/bash

cd ALLE
for DIR in $(find .. -type d | grep -v ALLE) ; do
    ln -s $DIR/* .
done
Da ist dann auch der Name der Verzeichnisse egal.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply