Как я могу символическую ссылку каждого из файлов в одном каталоге в другой каталог?


15

Если у меня есть каталог /fooс несколькими файлами в нем, как я симлинка каждую записи в /fooв /bar/?

Например, если /fooесть файлы a, bи cя хочу создать три символические ссылки:

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

Вы уверены, что не хотите просто символьную строку для foo?
Рич Брэдшоу

Реальное применение этого в том, что я установил программу и хотел бы переместить ее исполняемые файлы в стандартную папку в моем $ PATH, а не добавлять установленную в путь.
Стивен

Кажется, что было бы лучше просто настроить его --prefix=.
Hello71

Ответы:


18

Вы можете использовать (GNU) cpс --symbolic-linkопцией:

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$

Похоже, это и есть решение. Потрясающие!
Стивен

Это очень идеально.
Норадж

Есть ли способ сделать это применимо и к каталогам? Когда я запускаю это, я получаю предупреждение "cp: пропуск каталога './baz'"
solidau

15

Попробуйте это:

ln -s /foo/* /bar

Исходный каталог, как указано в вопросе, является /foo. Обратите внимание, что он должен быть полностью указан (то есть начиная с корневого каталога), поэтому другие примеры будут выглядеть так:

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

это вообще работает?
ctrlc-root

@ root.ctrlc: Вы должны указать полный путь к источнику ( /в моем исходном ответе). Я добавлю уточнение.
Приостановлено до дальнейшего уведомления.

Я думаю, что если вы хотите скопировать все как символическую ссылку только с помощью одной команды, вы должны использовать cp -s, например @hlovdal answer, cp -rs /var/www/folder/ .копировать файлы каждой подпапки как символическую ссылку, а не ln -s /var/www/folder/ .копировать файлы подпапок на моем компьютере.
Baptx

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.