我有一个只包含.txt文件的目录。我想打印每个文件的行数。当我编写cat file.txt | wc -l时,会出现行数,但是当我想要编写一个脚本时,就会更加复杂。我有这样的代码:
for fis in `ls -R $1`
do
echo `cat $fis | wc -l`
done我试过: wc -l $fis,使用awk,grep,但是它不起作用。它告诉我们:
cat: fis1:没有这样的文件或目录0
如何打印行号?
发布于 2017-04-28 19:07:34
要递归地查找子目录中的文件,请使用find命令,而不是ls -R命令,它主要用于人工读取。
find "$1" -type f -exec wc -l {} +对ls -R输出进行循环的问题是:
发布于 2017-04-29 08:47:05
这里没有问题,但是echo命令超出了需要:您可以使用
wc -l "${fis}"出什么问题了?您有一个名为fis1的子You。查看ls的输出
# ls -R fis1
fis1:
file1_in_fis1.txt当您解析此输出时,您的脚本将尝试
echo `cat fis1: | wc -l` cat会告诉你No such file or directory和wc计数0。
正如@Barmar所解释的那样,ls会打印您不想要的额外输出。
不要试图用| grep .txt和if [ -f "${fis}"]; then ..来修补您的尝试,filename with spaces.txt会失败的。所以使用find或shopt (并接受@Barmar或@Cyrus的答案)。
https://stackoverflow.com/questions/43687131
复制相似问题