我需要对目录中的文件(dir1)进行符号链接。每个文件必须有一个symbolik链接,如果有一个文件具有相同的文件名但在子文件夹中,我需要创建一个带后缀的符号链接。这是一个例子: 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
代码是python。有人可以帮帮我吗?
答案 0 :(得分:0)
为什么不在创建新链接之前检查链接是否已存在,并在获取新链接名称之前增加后缀?
答案 1 :(得分: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
它的概念,在linux中有什么用。因此,在运行之前清除outp
(dir2
个其他单词)是有原因的。