计算HDFS文件夹上具有给定扩展名的文件数

时间:2017-04-19 09:36:03

标签: bash hadoop hdfs

我正在编写一个bash脚本,该脚本应该可以计算指定文件夹中的json文件数。

我现在正在做的是:

hdfs dfs -ls /path/to/files/*.json | grep -E '^-' | wc -l

当至少有一个文件时,它会返回结果数,但是当没有json文件时,我希望结果为0,因为路径存在,但它不包含任何匹配的文件*.json模式。 然而,我得到的是一个错误:

ls: `/path/to/files/*.json': No such file or directory

这是预期的行为吗?

1 个答案:

答案 0 :(得分:2)

是的,这是默认行为。由于这些是错误消息,因此它们被发送到stderr而不是stdout。

如果您需要禁止消息,可以使用它: -

hdfs dfs -ls  <hdfs_location>/*.json -R 2>/dev/null | grep -E '^-' | wc -l

(如果没有找到匹配扩展名的文件,它将只显示0(没有错误)。

您还可以参考: - https://unix.stackexchange.com/questions/82698/how-to-mute-ls-command