列出目录中的文件,将输出存储在文件中,然后计算输出中的行数
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
我是 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