2016-04-21 118 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也顯示文件。