【问题标题】:Linux command to print a tree like directory structureLinux命令打印树状目录结构
【发布时间】:2016-08-14 23:44:19
【问题描述】:

我正在尝试编写一个脚本,它将以树形结构打印目录、子目录及其文件,但不使用树命令。

例子:

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

我尝试了多种解决方案,但总是遇到无法区分目录或文件的问题,因此无法应用正确的格式。 “DIR:”前缀使它变得复杂。有什么很明显的我遗漏的吗?

【问题讨论】:

    标签: linux command-line


    【解决方案1】:

    您也可以尝试这些命令的变体

    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

    【讨论】:

      【解决方案2】:

      引用自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 以同时显示文件。

      【讨论】:

        【解决方案3】:

        使用-d 测试:

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

        【讨论】:

        • 或者一般来说:权限的第一位就是文件类型,如果是d就是目录。
        猜你喜欢
        • 2011-03-28
        • 2015-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多