bash—计算hdfs文件夹中具有给定扩展名的文件数

cgh8pdjw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(400)

我正在编写一个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

这是预期的行为吗?

kxe2p93d

kxe2p93d1#

是的,这是默认的行为。因为这些是错误消息,所以它们被发送到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

相关问题