#!/usr/bin/python3 # =================================================================== # display directory tree # =================================================================== import re import os # ------------------------------------------------------------------- # ---- display the regular files in a directory and sub-directories # ---- indent file names based on their depth in the tree # ---- if maxdepth = 0 the complete tree will be output # ---- else only to the depth specified # ------------------------------------------------------------------- def displayDirectory(rootdir,depth,maxdepth): # ---- tree depth exceeded? if maxdepth != 0 and depth > maxdepth: return # ---- display directory name print(f'{"--" * depth} {rootdir}') # ---- make sure directory ends in '/' if not re.search('\/$',rootdir): rootdir = rootdir + '/' # --- get a list of entries in the directory files = os.listdir(rootdir) # --- remove all hidden and other non-display files # --- display the others and process sub-directories for f in files: ff = rootdir + f # full path + name # ---- skip links if os.path.islink(ff): continue # ---- skip hidden directory entries if re.search('^\.',f): continue # ---- display sub-directory? if os.path.isdir(ff): displayDirectory(ff,depth+1,maxdepth) # ---- display file name if os.path.isfile(ff): print(f'{" " * depth}{f}') # ------------------------------------------------------------------- # ----- main # ------------------------------------------------------------------- rootdir = '/home/tom' displayDirectory(rootdir,0,4)