shithub: rc

ref: 07c6cc69733990ab295b8b201e119150dfd696a0
dir: /bin/tree/

View raw version
#!/bin/rc
walk -f $* | sort | awk '
{
	n = split($1, dir, "/")
	if(n == 0)
		p = "/"
	else
		p = "."
	for(i=1; i<=n; i++){
		c = dir[i]
		if(!(c in par)){
			par[c] = p
			child[p,++nc[p]] = c
		}
		p = c
	}
}
function printbranch(p, link, ind,	i, n){
	n = nc[p]
	print ind link p
	if(ind != "" || link != "")
		ind = ind (link == "└" ? " " : "│")
	for(i=1; i<n; i++)
		printbranch(child[p,i], "├", ind)
	if(n >= 1)
		printbranch(child[p,i], "└", ind)
}
END{
	if("/" in nc)
		printbranch("/", "", "")
	if("." in nc)
		printbranch(".", "", "")
}
'