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
Steven
quelle
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$
hlovdal
quelle
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
Bis auf weiteres angehalten.
quelle
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
garyjohn
quelle