我正在尝试制作一个命令,该ls
命令在调用时仅显示前 30 个文件。我找到了这种方法...
ls | head -30
... 但最终它会将文件吐出到一个长列表中,而不是按行格式化或按照颜色进行着色.bash_profile
。那么,有什么方法可以简单地限制输出吗?
答案1
在 asteri 澄清这个问题之前,我以为 John1024 有答案。现在看来,即使没有该--color
选项,下面的操作也可以工作:
ls -d $(ls | head -30)
不幸的是,这太简单了,如果文件名中有空格,就会失败。为了考虑到这一点,你需要更复杂的方法:
ls -b | head -30 | xargs ls -d
两种情况下的原理都是相同的:ls | head
获取前 30 个文件,每行一个,然后将其作为另一个命令的参数列表显示,如果任何文件是目录,ls
则需要该选项。-d
答案2
要获得颜色:
ls -l --color=always | head -30
通常,ls
仅当输出直接发送到终端时才产生颜色。这通常是一件好事。要覆盖此设置,请使用--color=always
以上输出每行一个文件。如果空间允许,您可以每行输出更多文件,请尝试:
ls -l | head -30 | column
列实用程序将其输入格式化为多列。但是,使用颜色可能会造成混淆。