Dev*_*lar 5 bash ls multiple-columns
当您ls在命令行上没有其他选项的情况下调用时,每行会获得多个条目.
举例:
$ ls mydir/*.tar.gz
mydir/foo.tar.gz mydir/bar.tar.gz mydir/baz.tar.gz
Run Code Online (Sandbox Code Playgroud)
但是如果你想以某种方式修改输出,你每行会得到一个条目:
$ ls mydir/*.tar.gz | sed "s/\.tar\.gz//g"
mydir/foo
mydir/bar
mydir/baz
Run Code Online (Sandbox Code Playgroud)
有很多条目,这变得很麻烦 - 我希望多个对齐的列回来.
我试图想出沿着线的东西find mydir -name "*.tar.gz" -printf ...,或者... -exec ...,甚至(议员!) for file in $(find ...),但什么是我能想出的是真的很糟糕恶臭(认为计数器变量,以模和只是猜测终端宽度...) .
有一些优雅的方式来获得几个文件名的像香草多列输出ls,与他们(通过例如,具有修修补补后sed,basename等)?
(令人惊讶的命名)column命令将做你想要的.
ls | column -c 80
Run Code Online (Sandbox Code Playgroud)
将以80列显示的列显示输出.您可能必须等待输出,因为它必须先确定项目的宽度才能格式化任何内容.
当然,它将适用于任何命令.
您可以使用COLUMNS变量找到您的列(这可能取决于您的shell - 类型set以查看变量列表并找出它),或使用该tput cols命令.
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |