红联Linux门户
Linux帮助

Linux用树形结构显示目录结构

发布时间:2015-09-06 10:08:35来源:linux网站作者:kongxx

在有些Linux上自带了tree命令来一树状结构显示一个目录,但是在有些linux上没有自带这个程序,所以这里用python写了一个小程序来实现这个功能,代码如下:


#!/usr/bin/python 
import os, sys, string 
class XXTree: 
def __init__(self): 
pass 
 
def printHelp(self, cmd): 
print 'Please use the following cmd:' 
print '' + cmd + ' dir' 
print 'e.g.' 
print '' + cmd + ' /home/fkong/tmp' 
def getTree(self, dir): 
list = self.getList(dir, 0) 
treelist = [] 
 
for i in range(0, len(list)): 
fullpath = list[i] 
parpath = os.path.dirname(list[i]) 
filename = os.path.basename(list[i]) 
if(fullpath == dir):  
treelist.append(fullpath) 
continue 
 
path = fullpath.replace(dir, "") 
names = path.split("/") 
name = "`---" + names[len(names) - 1] 
for j in range(1, len(names) - 1): 
name = "" + name 
treelist.append(name) 
 
pos = name.index("`") 
j = i - 1 
while j > 0: 
name = treelist[j] 
if(name[pos] == '`' or name[pos] == ' '): 
name = name[0: pos] + "|" + name[pos + 1: len(name)] 
treelist[j] = name 
else: 
break 
j = j - 1 
 
for i in range(0, len(treelist)): 
print treelist[i] 
 
def getList(self, dir, layer): 
list = [] 
if layer == 0: list.append(dir) 
files = os.listdir(dir) 
for file in files: 
file = os.path.join(dir, file) 
if os.path.isdir(file): 
list.append(file) 
list += self.getList(file, layer + 1) 
else : 
list.append(file) 
return list 
if len(sys.argv) != 2: 
t = XXTree() 
t.printHelp(sys.argv[0]) 
else: 
t = XXTree() 
dir = sys.argv[1] 
t.getTree(dir) 


运行效果如下:


$ ./xxtree.py  /home/fkong/workspace/jutility/.svn

/home/fkong/workspace/jutility/.svn

|---format

|---props

|---entries

|---prop-base

|---text-base

|---tmp

|   |---prop-base

|   |---props

|   `---text-base

`---all-wcprops


CentOS目录结构详解:http://www.linuxdiyf.com/linux/10071.html

Linux开发环境搭建与使用-Linux目录结构及文件:http://www.linuxdiyf.com/linux/9746.html

详细解析Linux目录结构:http://www.linuxdiyf.com/linux/34.html