2017-10-26 2 views
1

내가 그 이름에 *foo*를 포함하는 모든 파일의 folder2에 소프트 링크 (ln -s)를 만들려는 모든 하위 디렉토리에있는 특정 파일을 소프트 링크, 그리고 일부 또는 folder1의 모든 하위 디렉토리에서 찾을 수 있습니다 방법.LINUX :

나는 for, findfind -exec ln, 이들의 조합으로 그것을 시도했지만, 당신은에 있다면 내가 할 모든 *foo*라는 깨진 링크가 있거나 folder1

+0

시도한 코드를 붙여 넣을 수 있습니까? – skr

+0

실제로 [Unix & Linux Stack Exchange] (https://unix.stackexchange.com/)에 있어야합니다 .. ../[folder1 directory]/* scn *; i에 대해 – Tigger

+0

을 입력해야합니다. ln -s $ i를 수행하십시오. done 이것은 폴더 2에 있습니다. – Krotanix

답변

2

하나에서 globstar으로 뇌졸중이보십시오.

shopt -s globstar 
cd folder2 
ln -s ../folder1/**/*foo* . 

cd (이 너무을 찾을 이용하여 아래의 답변 적용) 상대 링크 필요합니다. 절대 링크를 원할 경우

shopt -s globstar 
ln -s /where/is/it/folder1/**/*foo* folder2/ 
+0

감사합니다. – Krotanix

0

내부의 모든 것에 대한 링크입니다 target 폴더에 심볼릭 링크를 만들려면 ln -s <target file>을 사용하십시오. sym 링크 이름은 대상 파일과 동일합니다.

여러 파일에 대해이 작업을 수행해야하는 경우 for 루프를 사용하십시오.

예 :

$ mkdir folder1 folder2 
$ cd folder1 
$ touch foo foobar foofoobar foobarfoo bar barfoo barbar 
$ ls 
bar barbar barfoo foo foobar foobarfoo foofoobar 
$ cd ../folder2 
$ for i in ../folder1/*foo*; do ln -s $i; done 
$ ls -l 
total 0 
lrwxrwxrwx 1 abc abc 17 oct. 26 11:57 barfoo -> ../folder1/barfoo 
lrwxrwxrwx 1 abc abc 14 oct. 26 11:57 foo -> ../folder1/foo 
lrwxrwxrwx 1 abc abc 17 oct. 26 11:57 foobar -> ../folder1/foobar 
lrwxrwxrwx 1 abc abc 20 oct. 26 11:57 foobarfoo -> ../folder1/foobarfoo 
lrwxrwxrwx 1 abc abc 20 oct. 26 11:57 foofoobar -> ../folder1/foofoobar 
+0

안녕하세요, 작동하지 않으며 깨진 부분 만 생성합니다. * foo *라는 파일. 파일이 하위 폴더 sub-sub ... folder1의 하위 디렉토리에 있다고 생각하십시오. – Krotanix

0

for fileName in `find folder1 -name *foo*` 
do 
    name1=`basename $fileName` 
    ln -sf $fileName folder/$name1 
done 
0

확인이

for file in `find . -name *foo* -print` 
do 
    ln -s $file folder2/ 
done 
+0

oliv에서 제공하는 코드를 적용한 것과 같은 결과입니다. 작동하지 않으며 foo라는 이름의 깨진 파일 만 생성합니다. 파일이 하위 1 ... 하위 디렉토리에 있다고 생각하십시오. – Krotanix

+0

오류를 붙여주십시오. 또는 실제 o/p 예 및 예상 o/p – skr