首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印行数

打印行数
EN

Stack Overflow用户
提问于 2017-04-28 18:56:14
回答 2查看 60关注 0票数 0

我有一个只包含.txt文件的目录。我想打印每个文件的行数。当我编写cat file.txt | wc -l时,会出现行数,但是当我想要编写一个脚本时,就会更加复杂。我有这样的代码:

代码语言:javascript
复制
for fis in `ls -R  $1`
do
        echo `cat $fis | wc -l`       

done

我试过: wc -l $fis,使用awk,grep,但是它不起作用。它告诉我们:

cat: fis1:没有这样的文件或目录0

如何打印行号?

EN

回答 2

Stack Overflow用户

发布于 2017-04-28 19:07:34

要递归地查找子目录中的文件,请使用find命令,而不是ls -R命令,它主要用于人工读取。

代码语言:javascript
复制
find "$1" -type f -exec wc -l {} +

ls -R输出进行循环的问题是:

  1. 带有空格的文件名将不能正确解析。
  2. 它只打印文件名旁边的其他输出。
票数 1
EN

Stack Overflow用户

发布于 2017-04-29 08:47:05

这里没有问题,但是echo命令超出了需要:您可以使用

代码语言:javascript
复制
wc -l "${fis}"

出什么问题了?您有一个名为fis1的子You。查看ls的输出

代码语言:javascript
复制
# ls -R fis1
fis1:
file1_in_fis1.txt

当您解析此输出时,您的脚本将尝试

代码语言:javascript
复制
echo `cat fis1: | wc -l` 

cat会告诉你No such file or directorywc计数0

正如@Barmar所解释的那样,ls会打印您不想要的额外输出。

不要试图用| grep .txtif [ -f "${fis}"]; then ..来修补您的尝试,filename with spaces.txt会失败的。所以使用findshopt (并接受@Barmar或@Cyrus的答案)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43687131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档