특정 디렉토리의 ln -s
모든 파일 (또는 파일로 끝나는 파일 클래스)에 대한 심볼릭 링크 ( ) 를 만들고 싶습니다 .bar
. 내가 cwd에 있고 유형 ls ../source/*.bar
이 나에게 있다고 말해
foo.bar
baz.bar
ln -s
마지막으로 해결 되는 매개 변수 목록을 전달하는 방법
ln -s ../source/foo.bar
ln -s ../source/baz.bar
물론 나는 bash 스크립트를 작성할 수 있다는 것을 알고 있지만 xargs
적어도 나에게는 일반적인 작업 인 것처럼 보이기 때문에 더 간단한 것이 있어야합니다 .
답변
ln
여러 인수를 취하지 만 그 경우 대상 디렉토리를 지정하는 것을 잊지 마십시오.
따라서 귀하의 예 .
에는 대상 디렉토리가 있으므로 쉽게해야합니다.
ln -s ../source/*.bar .
부터 man ln
; 위의 명령은 세 번째 형식을 사용합니다.
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
- 첫 번째 양식에서 이름이 LINK_NAME 인 TARGET에 대한 링크를 작성하십시오.
- 두 번째 양식에서 현재 디렉토리에 TARGET에 대한 링크를 작성하십시오.
- 세 번째 및 네 번째 양식에서 DIRECTORY의 각 대상에 대한 링크를 작성하십시오.
답변
용도 find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
또한 심볼릭 링크와 함께 전체 경로 (가능한 경우) 를 사용해야 합니다.
답변
globstar (bash / zsh set by shopt -s globstar
) 를 사용하여 재귀 적으로 시도 할 수 있습니다 .
ls -vs ../**/*.bar .
참고 : -v
자세한 내용을 추가 했습니다.
또는 find
유틸리티를 사용하여 목록이 너무 긴 경우 :
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
에 링크가 만들어 dest/
지거나 .
현재 폴더로 변경됩니다 .
답변
cp
과 -s
옵션 소프트 링크 (또는 생성 할 수 있습니다 -l
하드 링크).
현재 디렉토리에서 다음과 같이 사용할 수 있습니다.
$ cp -s ../path/with/scripts/* .
귀하의 경우 다음과 같습니다.
$ cp -s ../source/*.bar .