shell中的目录树结构

shell中的目录树结构,shell,command,Shell,Command,我想用shell命令打印一个目录树结构,有人能帮我了解一下怎么做吗?因为我有点新 PS:我不能使用Sed和OCT . |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem -- Lorem 下面是一个递归解决方案,它不是最有效的,但是是本机的bash,易于理解: $ cat tree.sh #!/bin/bash shopt -s nullglob tree() { if [ "$1" = '-d'

我想用shell命令打印一个目录树结构,有人能帮我了解一下怎么做吗?因为我有点新

PS:我不能使用Sed和OCT

.
|-- Lorem
|-- Lorem
|-- Lorem
  |-- Lorem
  |-- Lorem
|-- Lorem
-- Lorem

下面是一个递归解决方案,它不是最有效的,但是是本机的
bash
,易于理解:

$ cat tree.sh
#!/bin/bash

shopt -s nullglob

tree()
{
        if [ "$1" = '-d' ]; then
                _TREE_DIRSONLY=1
                shift
        fi
        _tree "${1-.}"
}

_tree()
{
        local indent="${indent}"
        local dir=${1%/}

        printf "%s|-- %s\n" "${indent}" "${dir##*/}"
        indent="${indent}  "
        for file in "$1"/*; do
                if [ -d "${file}" ]; then
                        _tree "${file}"
                        continue
                fi
                (( _TREE_DIRSONLY > 0 )) && continue
                printf "%s|-- %s\n" "${indent}" "${file##*/}"
        done
}

tree "$@"


可能重复:欢迎使用堆栈溢出。请尽快阅读这一页。[温和的调侃:在一个目录中有多个文件,但名称末尾的尾随空格(或其他不可见字符)数量不同,这是个坏主意。我不明白如何才能在一个目录中有这么多
Lorem
(除非我想您使用回车符覆盖不同的前缀)。]例如,您应该展示您已经尝试了什么,或者您计划如何获取目录名列表。这是unix/linux系统吗?如果是,请查看您的系统是否有
ptree
。否则,当您阅读
manps
时,请查找
选项。(最好在您的问题上添加一个标签,说明您正在使用的操作系统类型)。祝你好运。是的,我正在搜索类似的东西,但是我不想使用以前编写的代码,比如树,而不是我可以使用sed,我想知道创建这样的树的步骤和想法。这也可以是对.bashrc文件的一个方便的添加,别名为
alias lst=“tree.| less”
$ ./tree.sh /proc/fs
|-- fs
  |-- cifs
    |-- cifsFYI
    |-- DebugData
    |-- LinuxExtensionsEnabled
    |-- LookupCacheEnabled
    |-- MultiuserMount
    |-- SecurityFlags
    |-- traceSMB
  |-- ext4
  |-- jbd2
  |-- nfsd
  |-- nfsfs
    |-- servers
    |-- volumes
  |-- xfs
    |-- stat
    |-- xqm
    |-- xqmstat

$ ./tree.sh -d /proc/fs
|-- fs
  |-- cifs
  |-- ext4
  |-- jbd2
  |-- nfsd
  |-- nfsfs
  |-- xfs