如何让“wc -l”只打印没有文件名的行数?

wc -l file.txt 

输出行数和文件名。

我只需要数字本身(不是文件名)。

我可以做这个

  wc -l file.txt | awk '{print $1}' 

但也许有更好的办法?

试试这个方法:

 wc -l < file.txt 
 cat file.txt | wc -l 

根据手册页 (对于BSD版本,我没有GNU版本检查):

如果没有指定文件,则使用标准input,并且不显示文件名。 提示将接受input,直到收到EOF,或在大多数环境中为[^ D]。

要做到这一点没有领先的空间,为什么不:

 wc -l < file.txt | bc 

怎么样

 wc -l file.txt | cut -d' ' -f1 

即pipe道输出wc cut (其中分隔符是空格,只select第一个领域)

怎么样

 grep -ch "^" file.txt 

显然,这有很多解决scheme。 这是另外一个:

wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"

这只输出行数,但是后面的换行符( \n )是存在的,如果你不想这样做,用[:space:]replace[:blank:] [:space:]

最好的方法是首先find目录中的所有文件,然后使用AWK NR(Number of Records Variable)

下面是命令:

 find <directory path> -type f | awk 'END{print NR}' 

例如: – find /tmp/ -type f | awk 'END{print NR}' find /tmp/ -type f | awk 'END{print NR}'