Linux 获取目录中csv文件的计数
我正在使用下面的命令获取目录中的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具有
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
。