Linux 获取目录中csv文件的计数

Linux 获取目录中csv文件的计数,linux,shell,Linux,Shell,我正在使用下面的命令获取目录中的csv计数 ll*.csv|wc-l 但如果没有csv文件,它会打印 ls: cannot access *.csv: No such file or directory 0 我需要将此计数存储在一个变量中。如果有10个csv文件,则应存储10个,如果没有csv文件,则应存储0个。这是一个更好的解决方案: find ./ -type f -name '*.csv' | wc -l …应该注意的是,包含新行的文件名会扭曲结果(与ls相同) 如果您的find具有

我正在使用下面的命令获取目录中的csv计数

ll*.csv|wc-l

但如果没有csv文件,它会打印

ls: cannot access *.csv: No such file or directory
0

我需要将此计数存储在一个变量中。如果有10个csv文件,则应存储10个,如果没有csv文件,则应存储0个。

这是一个更好的解决方案:

find ./ -type f -name '*.csv' | wc  -l
…应该注意的是,包含新行的文件名会扭曲结果(与
ls
相同)

如果您的
find
具有
-printf
选项(如GNU find),则可以执行以下操作:

find -type f -name '*.csv' -printf '.' | wc -c
这既可以处理带有新行的文件名,也可以更快(有关更多信息,请参阅)


请注意,如果从stdin读取(而不是作为参数给定的文件),
wc-l
wc-c
返回数值,包括
0
,如果
wc-l
没有新行或没有字符(空字符串)对于
wc-c

您可以简单地重定向错误消息:
ls-1*.csv2>/dev/null | wc-l
,有什么问题吗?请理解,您正在将
ls
命令的
stderr
重定向到
/dev/null
。标准流文件号是
0-stdin
1-stdout
2-stderr
,因此通过使用
2>/dev/null
可以将
stderr
上的所有输出重定向到位存储桶。@Abhiramvarma:是否需要在(POSIX)-Shell中执行此操作?如果可以在bash或zsh中执行此操作,请使用csv文件名创建一个数组并获取元素数。如果没有文件,请确保glob已扩展为空。例如,在Zsh中,您可以通过
arr=(*.csv(ND));echo$#arr