AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1095947
Accepted
Michał Rowicki
Michał Rowicki
Asked: 2018-11-26 08:15:06 +0800 CST2018-11-26 08:15:06 +0800 CST 2018-11-26 08:15:06 +0800 CST

显示带有文件内容的目录树

  • 772

我想在终端树中打印出来,如下所示:

$树-a
.
└── .git
    ├── 分支机构
    ├── 配置
    ├── 说明
    ├── 头
    ├── 挂钩
    │ ├── applypatch-msg.sample
    │ ├── commit-msg.sample
    │ ├── fsmonitor-watchman.sample
    │ ├── post-update.sample
    │ ├── pre-applypatch.sample
    │ ├── pre-commit.sample
    │ ├── prepare-commit-msg.sample
    │ ├── pre-push.sample
    │ ├── pre-rebase.sample
    │ ├── pre-receive.sample
    │ └── update.sample
    ├── 信息
    │ └── 排除
    ├── 物体
    │ ├── 信息
    │ └── 包
    └── 参考
        ├── 头
        └── 标签

以图形方式显示所有文件的内容,即它应该分别喜欢吗?

.
└── .git
    ├── 分支机构
    ├── 配置
    |
    | [核]
    | 存储库格式版本 = 0
    | 文件模式 = 真
    | 裸=假
    | logallrefupdates = 真
    |
    ├── 说明
    |
    | 未命名的存储库;编辑此文件“描述”以命名存储库。
    |
    ├── 头
    |
    | 参考:参考/负责人/大师
    |

有没有一种简单的方法可以实现?

command-line tree
  • 1 1 个回答
  • 1856 Views

1 个回答

  • Voted
  1. Best Answer
    wjandrea
    2018-11-26T19:30:04+08:002018-11-26T19:30:04+08:00

    我不知道有一种简单的方法可以做到这一点,但我写了一个类似的脚本。我没有像做那样列出花哨的树tree,而是把它弄平了,像find.

    输出(在一个空的 git repo 中,如您的示例):

    .git/
    .git/branches/
    .git/config
    ==> start .git/config <==
    [core]
            repositoryformatversion = 0
            filemode = true
            bare = false
            logallrefupdates = true
    ==> end .git/config <==
    
    .git/description
    ==> start .git/description <==
    Unnamed repository; edit this file 'description' to name the repository.
    ==> end .git/description <==
    
    .git/HEAD
    ==> start .git/HEAD <==
    ref: refs/heads/master
    ==> end .git/HEAD <==
    
    .git/hooks/
    
    ...
    

    (==> ... <==页眉/页脚的灵感来自tail)

    这是脚本:

    #!/bin/bash
    
    # Globs include hidden files, are null if no matches, recursive with **
    shopt -s dotglob nullglob globstar
    
    for file in **; do
        # Print filename with an indicator suffix for filetype
        ls --directory --classify -- "$file"
        filetype="$(file --brief --mime-type -- "$file")"
        # Only print text files
        if [[ $filetype == text/* ]]; then
            printf '==> %s %s <==\n' start "$file"
            cat --show-nonprinting -- "$file"
            printf '==> %s %s <==\n' end "$file"
            echo
        fi
    done
    

    它不漂亮,但它有效。颜色使它至少漂亮:

    #!/bin/bash
    
    shopt -s dotglob nullglob globstar
    
    for file in **; do
        ls --directory --classify --color=yes -- "$file"
        filetype="$(file --brief --mime-type -- "$file")"
        # Only print text files
        if [[ $filetype == text/* ]]; then
            printf '\e[32m==> %s %s <==\e[m\n' start "$file"
            cat --show-nonprinting -- "$file"
            printf '\e[31m==> %s %s <==\e[m\n' end "$file"
            echo
        fi
    done
    

    截屏:

    显示由 <code>ls</code> 着色的文件名、绿色“开始”标记和红色“结束”标记的屏幕截图

    • 3

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve