加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash:得到修改的`ls`-like输出(每行多个条目)

发布时间:2020-12-15 22:43:13 所属栏目:安全 来源:网络整理
导读:当您在命令行上调用没有其他选项的ls时,每行会得到多个条目. 举例: $ls mydir/*.tar.gzmydir/foo.tar.gz mydir/bar.tar.gz mydir/baz.tar.gz 但是如果你想以某种方式修改输出,你每行会得到一个条目: $ls mydir/*.tar.gz | sed "s/.tar.gz//g"mydir/foomy
当您在命令行上调用没有其他选项的ls时,每行会得到多个条目.

举例:

$ls mydir/*.tar.gz
mydir/foo.tar.gz        mydir/bar.tar.gz        mydir/baz.tar.gz

但是如果你想以某种方式修改输出,你每行会得到一个条目:

$ls mydir/*.tar.gz | sed "s/.tar.gz//g"
mydir/foo
mydir/bar
mydir/baz

有很多条目,这变得很麻烦 – 我希望多个对齐的列回来.

我试图在$(找到mydir -name“* .tar.gz”-printf …,或者…… -exec …,甚至(yuk!)的文件中提出一些内容.找到…),但任何我能想到的东西真的不优雅(想想计数器变量,模数和猜测终端宽度…).

是否有一些优雅的方法可以在多列输出中获得几个文件名,就像使用vanilla ls一样,在修改它们之后(通过例如sed,basename等)?

解决方法

(令人惊讶的命名)列命令将执行您想要的操作.

ls | column -c 80

将以80列显示的列显示输出.您可能必须等待输出,因为它必须先确定项目的宽度才能格式化任何内容.

当然,它将适用于任何命令.

您可以使用COLUMNS变量找到您的列(这可能取决于您的shell – 类型集以查看变量列表并将其弄清楚),或使用tput cols命令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读