我想检查一下HDFS位置内是否有一个或多个avro文件
[cloudera@client01 scripts]$ hdfs dfs -ls /user/cloudera/output_files/file_date_2017-04-05
Found 11 items
-rw-rw---- 2 cloudera cloudera 0 2017-04-24 13:57 /user/cloudera/output_files/file_date_2017-04-05/_SUCCESS
-rw-rw---- 2 cloudera cloudera 781714 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00000-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 782132 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00001-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 782467 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00002-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 785117 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00003-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
但是当我应用下面的hdfs命令时,我什么都没得到。
[cloudera@client01 scripts]$ hdfs dfs -ls /user/cloudera/output_files/file_date_2017-04-05/* | grep "part*.avro"
[cloudera@client01 scripts]$ echo $?
1
[cloudera@client01 scripts]$ hdfs dfs -ls /user/cloudera/output_files/file_date_2017-04-05/ | grep "part*.avro"
[cloudera@client01 scripts]$ echo $?
1
我希望打印0,因为HDFS位置内有许多avro文件。
有人可以帮我解决上面这个命令出了什么问题
答案 0 :(得分:1)
在这里,您需要.*
来匹配grep
中文件名模式之间的零个或多个字符。
hdfs dfs -ls /user/cloudera/output_files/file_date_2017-04-05/ | grep "part.*\.avro"
或者,如果只需要退出代码,则可以使用-test
。
hdfs dfs -test -e /user/cloudera/output_files/file_date_2017-04-05/part*.avro
echo $?
0