【问题标题】:Passing parameters to a print directory like tree command将参数传递给像树命令这样的打印目录
【发布时间】:2020-02-19 07:42:30
【问题描述】:

关注Linux command to print directory structure in the form of a tree的回答

我有:

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)

【问题讨论】:

  • 当您明确要求 bash 解决方案时,为什么还要将其标记为 zsh

标签: bash function parameter-passing alias zsh


【解决方案1】:

我有两个版本:

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/-/|/'}

享受

【讨论】:

  • 很好的答案,但请记住用双引号将$1 括起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 2014-10-25
  • 2017-02-22
  • 2016-08-14
  • 1970-01-01
  • 2012-02-17
相关资源
最近更新 更多