我正在编写一个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
这是预期的行为吗?
是的,这是默认行为。由于这些是错误消息,因此将它们发送到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