我试图编写一个脚本,它将在树形结构中打印目录,子目录及其文件,但不使用树命令。
示例:
DIR: A
f1
f2
DIR: B
f3
DIR: C
file1
file21
我尝试了多种解决方案,但我总是遇到无法区分目录或文件的问题,因此我无法应用正确的格式。 " DIR:"前缀使它变得复杂。我有什么非常明显的遗失吗?
答案 0 :(得分:2)
使用-d
测试:
if [ -d "$path" ] ; then
echo DIR
fi
答案 1 :(得分:0)
这是您在寻找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
以显示文件。
答案 2 :(得分:0)
您也可以尝试使用这些命令的变体
find . -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
find . | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
find -type d
tree -l