한 디렉토리의 각 파일을 다른 디렉토리에 심볼릭 링크하려면 어떻게해야합니까?


15

/foo파일이 몇 개인 디렉토리가있는 경우 각 항목을 어떻게 심볼릭 링크 /foo로 연결 /bar/합니까?

예를 들어, 만약 /foo파일이있다 a, b그리고 c, 나는 3 심볼릭 링크를 만들려면 :

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

bar를 foo에 symlink하고 싶지 않습니까?
Rich Bradshaw

실제 응용 프로그램은 프로그램을 설치하고 설치된 파일을 경로에 추가하는 대신 실행 파일을 $ PATH의 표준 폴더로 옮기고 싶다는 것입니다.
Steven

로 구성하는 것이 더 좋은 아이디어 인 것 같습니다 --prefix=.
Hello71

답변:


18

cp다음 --symbolic-link옵션 과 함께 (GNU) 를 사용할 수 있습니다 .

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$

이것은 정확히 해결책 인 것 같습니다. 대박!
Steven

이것은 매우 완벽합니다.
noraj

디렉토리에도 적용 할 수있는 방법이 있습니까? 이것을 실행하면 경고 "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 : 소스의 전체 경로를 지정해야합니다 ( /원래 답변에 있음). 설명을 추가하겠습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

하나의 명령으로 모든 것을 symlink로 복사하려면 @hlovdal answer와 같은 cp -s를 사용해야 cp -rs /var/www/folder/ .하며 모든 하위 폴더 파일을 symlink ln -s /var/www/folder/ .로 복사해야합니다. 누가 내 컴퓨터의 하위 폴더 파일을 복제 했는지와는 다릅니다 .
baptx

2

이 같은?

cd /foo
for f in *; do ln -s $PWD/$f /bar; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.