根据答案这里我能够以ls
格式列出我的 tarball 的内容。但是,我希望能够以tree
格式列出它们,即以后者而不是前者的形式列出它们:
和tar
:
$ tar -tf foo.tar
foo/
foo/baz/
foo/baz/qux/
foo/baz/qux/hisfile.txt
foo/bar/
foo/bar/myfile.txt
foo/bar/yourfile.txt
和tree
:
$ tree foo
foo
├── bar
│ ├── myfile.txt
│ └── yourfile.txt
└── baz
└── qux
└── hisfile.txt
不解压 tarball 可以做到这一点吗?由于 tarball 的大小,我宁愿避免解压 tarball。
答案1
有多个脚本可用于将路径名列表转换为树形式:
- 我自己的treeify.pl
- treeify.rs作者:Loïc Damien
- 树化作者 Hakril
所有这些脚本都适用于tar -tf …
输出;例如:
$ tar -tf foo.tar | treeify 富 ─酒吧 │ │ ─我的文件.txt │ └─你的文件.txt └─巴兹 └─qux └─他的文件.txt
还:
$ bsdtar -tf foo.zip | treeify
$ find /dir -size +5 | treeify
$ git ls-files | treeify
$ pacman -Qql foopkg | treeify
$ unrar vb foo.rar | treeify
$ zipinfo -1 foo.zip | treeify
$ gsettings list-schemas | treeify -s. -f
$ qdbus | sed -n "s/^ //p" | treeify -s. -f
$ ldns-walk netbsd.org | awk '{print $1}' | treeify -s. -f -R
答案2
这只是对 user1686 的回答的补充,尽管我的声誉不足以发表评论。虽然他的脚本确实能很好地完成工作,但它们需要下载,而tree
实际上可以在本地执行此操作:
$ tar tf foo.tar | tree --fromfile .
.
└── foo
├── bar
│ ├── myfile.txt
│ └── yourfile.txt
└── baz
└── qux
└── hisfile.txt
4 directories, 3 files
请注意,与大多数工具不同,tree
使用点.
而不是破折号-
来从标准输入读取输入:
INPUT OPTIONS
--fromfile
Reads a directory listing from a file rather than the file-system.
Paths provided on the command line are files to read from rather than directories to search.
The dot (.) directory indicates that tree should read paths from standard input.
这允许人们使用典型的树函数,如通配符,尽管显然无法显示大小,并且级别参数(-L
)显然也不起作用......