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命令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |