Wie verknüpfe ich jede der Dateien in einem Verzeichnis mit einem anderen Verzeichnis?


15

Wenn ich ein Verzeichnis /foomit einigen Dateien darin, wie Symlink ich jeden Eintrag in /fooin /bar/?

Wenn zum Beispiel /foodie Dateien hat a, bund cmöchte ich drei Symlinks erstellen:

  • /bar/a -> /foo/a
  • /bar/b -> /foo/b
  • /bar/c -> /foo/c

Sind Sie sicher, dass Sie die Leiste nicht einfach mit foo verknüpfen möchten?
— Rich Bradshaw

Die eigentliche Anwendung ist, dass ich ein Programm installiert habe und seine ausführbaren Dateien in einen Standardordner in meinem $ PATH verschieben möchte, anstatt das installierte Programm zum Pfad hinzuzufügen.
— Steven

Es scheint, als wäre es eine bessere Idee, es einfach mit zu konfigurieren --prefix=.
— Hallo71,

Antworten:


18

Sie können (GNU) cpmit der --symbolic-linkOption verwenden:

prompt$ mkdir foo
prompt$ cd foo
prompt$ touch a b c
prompt$ mkdir ../bar
prompt$ cd ../bar
prompt$ cp --symbolic-link ../foo/* .
prompt$ ls -l
total 0
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 a -> ../foo/a
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 b -> ../foo/b
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 c -> ../foo/c
prompt$

Dies scheint genau die Lösung zu sein. Genial!
— Steven

Das ist sehr perfekt.
— Noraj

Wie kann dies auch für Verzeichnisse gelten? Wenn ich das starte,
— bekomme

15

Probieren Sie es aus:

ln -s /foo/* /bar

Das in der Frage angegebene Quellverzeichnis lautet /foo. Beachten Sie, dass es vollständig spezifiziert sein muss (dh im Stammverzeichnis beginnen muss), damit andere Beispiele so aussehen:

ln -s /some/dir/with/baz/* destdir
ln -s /dir/to/link/from/* /dir/to/link/to
ln -s $PWD/stuff/* more/stuff

funktioniert das überhaupt
— ctrlc-root

@ root.ctrlc: Sie müssen den vollständigen Pfad der Quelle angeben (der sich /in meiner ursprünglichen Antwort befindet). Ich werde eine Klarstellung hinzufügen.
— Bis auf weiteres angehalten.

Ich denke, wenn Sie alles als Symlink mit nur einem Befehl kopieren möchten, müssen Sie cp -s wie @hlovdal answer verwenden, cp -rs /var/www/folder/ .kopiert alle Unterordnerdateien als Symlink, nicht wie ln -s /var/www/folder/ .die, die Unterordnerdateien auf meinem Computer dupliziert haben.
— Taufe

2

Etwas wie das?

cd /foo
for f in *; do ln -s $PWD/$f /bar; done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.