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

ast*_*eri 7 linux bash ls macos

我正在尝试创建一个命令,该ls命令在调用该命令时仅显示前 30 个文件。我找到了这个方法...

ls | head -30
Run Code Online (Sandbox Code Playgroud)

...但它最终会在一个长列表中吐出文件,而不是排成一行或按照.bash_profile. 那么,有没有办法简单地限制输出?

AFH*_*AFH 8

直到asteri澄清了这个问题,我以为John1024有答案。现在看来,如果没有该--color选项,以下内容将起作用:

ls -d $(ls | head -30)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这太简单了,如果文件名中有空格就会失败。要考虑到这一点,您需要更详细的说明:

ls -b | head -30 | xargs ls -d
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,原理是相同的:ls | head获取前 30 个文件,每行一个,然后作为参数列表提供给另一个ls命令,-d如果任何文件是目录,则需要该选项。