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.