Jak mogę dowiązać symbolicznie każdy plik z jednego katalogu do innego katalogu?


15

Jeśli mam katalog /fooz kilkoma plikami w nim, w jaki sposób podlinkowujemy Każdy wpis /foodo /bar/?

Na przykład, jeśli /fooma pliki a, ba cchcę, aby utworzyć trzy dowiązania:

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

Czy na pewno nie chcesz po prostu paska dowiązań symbolicznych do foo?
Rich Bradshaw,

Faktyczne zastosowanie tego polega na tym, że zainstalowałem program i chciałbym przenieść jego pliki wykonywalne do standardowego folderu w moim $ PATH zamiast dodawać zainstalowany plik do ścieżki.
Steven

Wydaje się, że lepszym pomysłem byłoby po prostu skonfigurowanie go --prefix=.
Cześć71,

Odpowiedzi:


18

Możesz użyć (GNU) cpz --symbolic-linkopcją:

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$

To wydaje się być dokładnie rozwiązaniem. Niesamowite!
Steven

To jest bardzo idealne.
noraj

jakikolwiek sposób, aby to również dotyczyło katalogów? Po uruchomieniu tego pojawia się ostrzeżenie „cp: omiting directory './baz'”
solidau

15

Wypróbuj to:

ln -s /foo/* /bar

Katalog źródłowy, jak określono w pytaniu, to /foo. Pamiętaj, że musi być w pełni określony (tj. Zaczynając od katalogu głównego), więc inne przykłady wyglądałyby tak:

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

czy to w ogóle działa?
ctrlc-root

@ root.ctrlc: Musisz podać pełną ścieżkę do źródła (co jest /w mojej oryginalnej odpowiedzi). Dodam wyjaśnienie.
Wstrzymano do odwołania.

Myślę, że jeśli chcesz skopiować wszystko jako dowiązanie symboliczne za pomocą tylko jednego polecenia, musisz użyć cp -s jak @hlovdal answer, cp -rs /var/www/folder/ .kopiuje wszystkie pliki podfolderów jako dowiązanie symboliczne, a nie tego, ln -s /var/www/folder/ .kto skopiował pliki podfolderów na moim komputerze.
baptx

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.