2016-04-21 82 views
0

我想写一个脚本,它将在树结构中打印目录,子目录及其文件,但不使用树命令。Linux命令打印目录结构树

例子:

DIR: A 
    f1 
    f2 
    DIR: B 
      f3 
DIR: C 
    file1 
    file21 

我试图解决的多,但我总是跑进我不能目录或文件区分的问题,所以我不能采用正确的格式。 “DIR:”前缀使其变得复杂。有什么非常明显的我失踪了吗?

回答

2

使用的-d测试:

if [ -d "$path" ] ; then 
    echo DIR 
fi 
+0

或者一般来说:权限的第一位是文件类型,如果是'd'则是目录。 – rockerest

0

this SO question

引用这是你想找的tree,应在大多数发行版(也许作为一个可选安装)?

~> tree -d /proc/self/ 
/proc/self/ 
|-- attr 
|-- cwd -> /proc 
|-- fd 
| `-- 3 -> /proc/15589/fd 
|-- fdinfo 
|-- net 
| |-- dev_snmp6 
| |-- netfilter 
| |-- rpc 
| | |-- auth.rpcsec.context 
| | |-- auth.rpcsec.init 
| | |-- auth.unix.gid 
| | |-- auth.unix.ip 
| | |-- nfs4.idtoname 
| | |-- nfs4.nametoid 
| | |-- nfsd.export 
| | `-- nfsd.fh 
| `-- stat 
|-- root ->/
`-- task 
    `-- 15589 
     |-- attr 
     |-- cwd -> /proc 
     |-- fd 
     | `-- 3 -> /proc/15589/task/15589/fd 
     |-- fdinfo 
     `-- root ->/

27 directories 

取自维护者网页的样本。

您可以添加选项-L #,其中#被数字替换,以指定最大递归级别。

删除-d也显示文件。