如何仅为第一个子级别显示根文件夹树,然后仅为其中一个子级显示第二个子级别

如何仅为第一个子级别显示根文件夹树,然后仅为其中一个子级显示第二个子级别

制定关于存储库的指南,它应该可以帮助读者只浏览构成手头任务核心的子文件夹中的文件夹和文件,而无需任何子子文件夹。同时,它还有助于在同一树中看到此子文件夹嵌入到第 1 级的完整存储库文件夹和文件树中,即根目录下的所有内容,但仅此而已。

目前的解决方法是将一棵树粘贴到另一棵树中,并使用制表符进行正确缩进:

  • 根文件夹的完整文件夹和文件列表
  • 只有一个嵌套文件夹(scripts),其中包含该文件夹的第一个子文件夹的所有文件夹和文件,因此没有孙级。

$ tree -La 1

$ tree ./scripts -La 1

$ tree -La 1
.
├── application
...
├── scripts
    $ tree ./scripts -La 1
    ./scripts
    ├── crontab
    ...
...
└── VERSION

有没有办法只用命令行来做到这一点?这样输出就会立即出现:

.
├── application
...
├── scripts
    ├── crontab
    some_file1
    ...
...
└── VERSION
some_file2

这个问题对于 Windows 和 Linux 都可以回答,允许使用 shell 脚本。

答案1

这个答案适用于Linux。

如果您tree支持,--fromfile那么您可以从阅读find有怪癖我将用 来对抗其中一个sed。我希望你们find支持-maxdepth。GNUfind支持它,我假设你们可以使用 GNU find

find . ./scripts -maxdepth 1 | sed 's|^./||' | tree --fromfile .

./scripts将在 的输出中出现两次find,但tree应该将其压缩为一次。

添加更多感兴趣的路径很简单。例如:

(cd / && find . ./etc ./var/log -maxdepth 1 | sed 's|^./||' | tree --fromfile .)

我的tree终端输出颜色为蓝色,目录为蓝色。tree --fromfile通过尾部斜杠识别目录。find不打印尾部斜杠,除非我们明确要求。我们的例子已修复:

(cd / && find . ./etc ./var/log -maxdepth 1 -type d -printf '%p/\n' -o -print \
| sed 's|^./||' | tree --fromfile .)

相关内容