2013-07-28 5 views
0

나는 디렉토리 트리를 순환하여 새로운 디렉토리에 심볼릭 링크를 만들고 파일의 이름을 디렉토리에 알려주는 새로운 이름으로 바꾸는 bash 스크립트를 갖고 싶다. 이 같은Symlink 디렉토리 트리를 하나의 디렉토리로

뭔가 :

원산지 :

디렉토리

- directorya 위

---- DirectoryAA

------ FileAA1

- ----- FileAA2

---- FileA1

---- FileA2

- directoryb 위

---- FileB1

- DirectoryC

---- FileC1

---- FileC2

,

---- FileC3

목적지 :

DirectoryDest

--DirectoryA - DirectoryAA - FileAA1

--DirectoryA - DirectoryAA - FileAA2

--DirectoryA - FileA1

- -DirectoryA - FileA2

--DirectoryB - FileB1

--DirectoryC - FileC1

--DirectoryC - FileC2

--DirectoryC - FileC3이 그것을해야

+0

콘크리트의 경우 Nothing, 그것을 할 수있는 방법을 상상할 수 없었다, 내가 작업에 답을 얻을 수 없었다, 일부 킥 스타트 – nan4k7

답변

0

:

cd Directory; find * -type f -print0 | xargs -l -0 bash -c 'filename=`echo "$0" | tr '/' -`; ln -s $(pwd)/$0 ../DirectoryDest/$filename' 

이렇게하면 다음 파일이 생성됩니다.

[email protected]:~$ ls -l DirectoryDest/ 
total 0 
lrwxrwxrwx 1 user user 51 Jul 27 23:02 DirectoryA-DirectoryAA-FileAA1 -> /home/user/Directory/DirectoryA/DirectoryAA/FileAA1 
lrwxrwxrwx 1 user user 51 Jul 27 23:02 DirectoryA-DirectoryAA-FileAA2 -> /home/user/Directory/DirectoryA/DirectoryAA/FileAA2 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryA-FileA1 -> /home/user/Directory/DirectoryA/FileA1 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryA-FileA2 -> /home/user/Directory/DirectoryA/FileA2 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryB-FileB1 -> /home/user/Directory/DirectoryB/FileB1 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC1 -> /home/user/Directory/DirectoryC/FileC1 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC2 -> /home/user/Directory/DirectoryC/FileC2 
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC3 -> /home/user/Directory/DirectoryC/FileC3 
+0

onionjake 필요, 나는 openwrt에 비지 박스를 사용하고 있는데 xargs를 그 PARAMS 없습니다 ... – nan4k7

+0

어떤 매개 변수입니까? '-l'대신 '-L 1'을 사용하십시오. – onionjake

+0

xargs도 사용하지 않고 다시 쓸 수 있습니다. http://stackoverflow.com/questions/8759285/alternatives-to-xargs-l을 참조하십시오. – onionjake