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

时间:2015-02-21 19:12:18

标签: unix

我是unix的初学者,并且已经完成了以下任务:

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

首先,我检查了我的结果:

ls ~/ | wc -l

我从中得到结果'20'。

然后我尝试了以下内容:

ls ~/ > newHomelist | wc -l

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

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

然而,我得到的结果是'23'。这不是我期待的结果。有人能告诉我哪里出错了吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果你需要在单行中进行,你可以使用tee分割输出(stdout)(参见' man tee')

$ ls ~/ | tee newHomelist | wc -l

使用>将stdout重定向到文件上意味着它不适用于管道中的后续命令。

您也可以将其作为多个命令

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