如何让“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}'