可以将 `ls` 设置为仅列出前 X 个文件/目录吗?

可以将 `ls` 设置为仅列出前 X 个文件/目录吗?

我正在尝试制作一个命令,该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

列实用程序将其输入格式化为多列。但是,使用颜色可能会造成混淆。

相关内容