2013-08-21 2 views
-1

디렉토리 (dir1)의 파일에 심볼 링크를 만들어야합니다. 각 파일에는 심볼 링크가 있어야합니다. 동일한 파일 이름이지만 하위 폴더에 파일이있는 경우 접미어로 심볼릭 링크를 만들어야합니다. 다음은 예입니다. dir1에 exe1, sh1, bash 파일이 있습니다. 디렉토리 종이에는 bash 파일과 file1, file2 file3 파일이 있습니다.하위 트리의 동일한 경로 이름이 다른 경로

exe1 → dir1/exe1 
sh1 → dir1/sh1 
bash → dir1/bash 
bash1 → dir1/paper/bash 
file1 → dir1/paper/file1 
file2 → dir1/paper/file2 
file3 → dir1/paper/file3 

코드는 파이썬입니다. 누구든지 나를 도울 수 있니?

+0

지금까지 해보신 것은 무엇입니까? 당신이 작성했거나 시도한 어떤 코드 나 무언가가 있습니까 ?? –

+0

그래서 무료 코드를 원합니다. – Sheena

+0

무료 코드를 원하지 않습니다. 파일이 하위 폴더에 더 많이 있는지 확인하는 방법에 대해 전혀 몰라서 symlink에 접미사를 추가해야합니다. . –

답변

0

새 링크를 만들기 전에 링크가 이미 있는지 확인하고 새 링크 이름을 가져올 때까지 접미어를 증가시키지 않는 이유는 무엇입니까?

0
import os, sys 

def maker(inputdir, outputdir, suffix=""): 
    if not (chechdir(inputdir) and chechdir(outputdir)): sys.exit(0) 
    for pos in os.listdir(inputdir): 
     name = os.path.abspath(inputdir+"/"+pos) 
     if os.path.isdir(name): 
      maker(name, outputdir, suffix+"1") 
     else: 
      simlnkname = os.path.abspath(outputdir+"/"+pos) 
      if os.path.exists(simlnkname): 
       simlnkname += suffix 
      os.symlink(name, simlnkname) 


def chechdir(directory): 
    if not (os.path.exists(directory) and os.path.isdir(directory)): 
     print "Error directory ", directory 
     return False 
    return True 

if __name__ == "__main__": 
    inp = "dir1" 
    outp = "dir2" 
    maker(inp, outp) 

테스트를 :

$ tree 
. 
├── dir1 
│   ├── bash 
│   ├── exe1 
│   ├── paper 
│   │   ├── bash 
│   │   ├── file1 
│   │   ├── file2 
│   │   └── file3 
│   └── sh1 
├── dir2 
└── test.py 

3 directories, 8 files 
$ python test.py 
$ tree 
. 
├── dir1 
│   ├── bash 
│   ├── exe1 
│   ├── paper 
│   │   ├── bash 
│   │   ├── file1 
│   │   ├── file2 
│   │   └── file3 
│   └── sh1 
├── dir2 
│   ├── bash -> /home/miha/exampldir/dir1/bash 
│   ├── bash1 -> /home/miha/exampldir/dir1/paper/bash 
│   ├── exe1 -> /home/miha/exampldir/dir1/exe1 
│   ├── file1 -> /home/miha/exampldir/dir1/paper/file1 
│   ├── file2 -> /home/miha/exampldir/dir1/paper/file2 
│   ├── file3 -> /home/miha/exampldir/dir1/paper/file3 
│   └── sh1 -> /home/miha/exampldir/dir1/sh1 
└── test.py 

3 directories, 15 files 

그것은 개념, 리눅스에서 어떻게 작동합니다. 따라서 실행하기 전에 outp (dir2 다른 단어)을 정리해야합니다.

관련 문제