bash - 将参数传递给像树命令这样的打印目录
问题描述
按照 Linux 命令的答案以树的形式打印目录结构
我有:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
列出树目录。
而不是仅仅创建一个别名,我希望它表现得像一个普通的命令并接受参数。
我有这个目录结构:
|-myhome
|---top
|-----test
|-------folder1
|-------folder2
|-------folder3
如果我想要这个(来自“顶部”):
|-test
|---folder1
|---folder2
|---folder3
我要cd top
一个然后ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
或者,来自“我的家”:ls -R top | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
我想要一些类似的东西:
lstree <dir>
在这种情况下(来自“顶部”):
lstree test
我不是从别名中得到的
我正在研究 bash 功能:
function ls4less(){ ls -R $1 | less}
然后我可以从“顶部”调用
ls4less
屈服
test
./test:
folder1
folder2
folder3
./test/folder1:
file11.txt
file12.txt
./test/folder2:
file21.txt
file22.txt
./test/folder3:
file31.txt
file32.txt
file33.txt
(END)
或者
ls4less test
屈服
folder1
folder2
folder3
test/folder1:
file11.txt
file12.txt
test/folder2:
file21.txt
file22.txt
test/folder3:
file31.txt
file32.txt
file33.txt
(END)
解决方案
我有两个版本:
function lstree_1(){ls -R "$1" | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'}
function lstree_2(){echo "$1" | ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'}
享受
推荐阅读
- vue.js - vuejs 计算或方法:哪个最好使用 vuex getter?
- image - 为什么 Chrome 可以渲染 PNG 图像,而 Firefox 不能?
- ios - 使用 Security.framework 在 iOS 上生成对称密钥
- c# - 如何一起创建字符串和字节的多维数组
- c# - Windows 10 64bit 上的双精度字节序是什么?
- sql - 列出不是主管的最年长员工
- r - facet_wrap 不会拆分用于在 facet 级别填充 geom_point 的数据
- visual-studio - 未找到 XAML 滑块方向
- c# - C#重试方法拦截与免费的AOP框架
- windows - 从同一网络中的另一台计算机访问本地网站