列出目录中的文件,将输出存储在文件中,然后计算输出中的行数

List files in directory, store output in file then count lines in output

我是 unix 的初学者,任务如下:

列出您的主目录的内容,将此输出存储在名为 newHomelist 的文件中,然后计算此输出的行数。

首先我检查了我的结果应该是什么:

ls ~/ | wc -l

我从中得到结果“20”。

然后我尝试了以下操作:

ls ~/ > newHomelist | wc -l

然而,这给了我“0”的结果。我想我明白为什么要这样做,因为我已经移动了文件中的所有行,因此它没有计算任何内容。我想我需要进入文件然后计算行数。像这样:

 ls ~/ > newHomelist | more newHomelist | wc -l

但是我得到的结果是“23”。这不是我期待的结果。谁能告诉我哪里出错了?

谢谢

如果您需要在一行中执行此操作,您可以使用 tee 拆分输出 (stdout)(参见 'man tee')

$ ls ~/ | tee newHomelist | wc -l

使用 > 将标准输出重定向到文件意味着它不可用于管道中的后续命令。

你也可以用多个命令来完成

$ ls ~/ > newHomeList
$ wc -l newHomeList
  # or the two commands combined onto one line as
$ ls ~/ > newHomeList ; wc -l newHomeList