如何在Hg清单中仅列出当前工作目录的文件和目录?
解决Mercurial只列出顶层文件和目录的问题
嗨,我之前也碰到过这个需求,给你几个简单好用的办法,帮你快速拿到仓库根目录下的顶层文件和目录:
方法一:用Mercurial原生的Fileset功能(推荐)
Mercurial的fileset支持按深度筛选,直接用depth(0)就能指定只取根目录下的元素,命令简洁又准确:
hg files -r tip "set:depth(0)"
这个命令会直接输出tip版本中仓库根目录下的所有文件和目录,不需要额外处理,完全是Mercurial原生支持的方式,结果靠谱又省心。
方法二:结合文本处理工具过滤
如果你习惯用hg manifest命令,也可以通过awk这类工具提取顶层路径:
hg manifest -r tip | awk -F/ '{print $1}' | sort -u
原理很简单:把每个路径按/分割,只取第一个字段(也就是顶层的文件名或目录名),再用sort -u去重,确保每个顶层元素只出现一次。
额外技巧:区分文件和目录
如果需要明确区分哪些是文件、哪些是目录,可以在上面的基础上再加个判断:
hg files -r tip "set:depth(0)" | while read item; do if hg files -r tip "set:path('$item') and isdir()"; then echo "[目录] $item" else echo "[文件] $item" fi done
这样就能清晰看到每个顶层元素的类型啦。
内容的提问来源于stack exchange,提问作者vinnylinux
相关产品推荐
相关产品推荐

