如何调整dpkg-query -L <package-name>命令的输出显示方式?
调整
dpkg-query -L输出的实用技巧 我太懂你这种感受了——默认的dpkg-query -L <package-name>会把所有包含文件的目录也一股脑列出来,输出又长又乱,找真正的文件得扒半天。下面分享几个我常用的调整方式,帮你把输出变得清爽实用:
1. 只显示文件,过滤掉所有目录
如果你的核心需求是看包安装的实际文件而非目录结构,直接用管道结合文件判断命令就能搞定:
dpkg-query -L tree | while read line; do [ -f "$line" ] && echo "$line"; done
这个命令会遍历dpkg-query输出的每一行,只保留是普通文件的路径,瞬间去掉那些冗余的目录条目。
或者用更简洁的版本:
dpkg-query -L tree | xargs -I {} sh -c '[ -f "{}" ] && echo "{}"'
2. 生成树形层级视图,清晰展示目录结构
如果你想保留目录关系但让输出更直观,用tree命令来格式化是绝佳选择:
dpkg-query -L tree | sort | tree --fromfile -
先通过sort把路径按层级排序,再让tree从标准输入读取路径并生成树形结构,输出会像这样(以tree包为例):
. ├── usr │ ├── bin │ │ └── tree │ └── share │ ├── doc │ │ └── tree │ │ ├── TODO │ │ ├── changelog.Debian.gz │ │ ├── copyright │ │ └── README.gz │ └── man │ └── man1 │ └── tree.1.gz
一眼就能看清整个包的文件布局。
3. 过滤特定类型的文件
如果只关心某一类文件(比如二进制可执行文件、文档或手册),用grep精准过滤即可:
- 只看二进制文件:
dpkg-query -L tree | grep -E '/usr/bin/|/bin/' - 只看手册页:
dpkg-query -L tree | grep man - 只看文档文件:
dpkg-query -L tree | grep doc
4. 输出到文件后再格式化查看
如果你习惯把输出保存到文件,之后可以用这些工具美化查看:
# 先保存输出 dpkg-query -L tree > tree-files.txt # 用tree生成树形视图 sort tree-files.txt | tree --fromfile - # 或者带行号用less查看 less -N tree-files.txt
内容的提问来源于stack exchange,提问作者lianwq
相关产品推荐
相关产品推荐

