如何获取`ls`命令的前n行

3

ls 命令按行输出其结果:

最初的回答

AndroidSandbox/                    kotlin-native-intellij/
arc-theme-macos/                   kotlin-native-sandbox/
BobkoLauncher/                     kotlin-ref-delegation/
...

如何获取此输出的前n行?ls | head -n 2不起作用,因为它将获取前两个文件,但我需要输出的前两行。将以下命令用于获取前两行:command | head -n 2

这个问题更适合在superuser.com或unix.stackexchange.com提问,因为我们不应该以编程方式使用ls命令的输出结果。 - undefined
@chepner:如果OP想要使用ls来处理文件列表,你的评论是正确的。但是在这里似乎不是这种情况,他明确地对ls输出的一部分感兴趣,无论这是什么(取决于终端的宽度)。这确实可以在脚本中使用。 - undefined
这更多是关于如何使用程序的问题,而不是关于编程的问题。 - undefined
4个回答

9

简短回答:
unbuffered ls | head -n 2
解释:
这里有详细说明。


4
另外需要注意的是:当使用管道同时使用 -C 和 -x 参数时,会使用默认屏幕宽度。因此你可能想要这样做:
ls -C --width="$(tput cols)" | head

3

看起来你可能需要以下命令的输出:

ls -C | head -2


对的。当你将ls的输出进行管道传输时,除非你提供像-C这样的选项,否则会自动得到ls -1的结果。 - undefined

0

之所以ls | head -n 2只显示前两个文件,是因为ls命令检测到输出不是tty(而是|),并相应地改变了其行为。

如果你使用ls -x | head -n 2,你将得到前两行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接