hdfs dfs -ls 在路径和文件名上使用通配符

hdfs dfs -ls with wildcard on path and file name

我正在尝试获取某些根目录下的所有文件,其中包含子目录和文件名中的模式。

below are hdfs path and files I'd like to filter from current partition/hdfs directories

/parent/2020-03-15/1/sales_28394.txt
/parent/2020-05-20/3/sales_38750.txt
/parent/2020-06-30/5/sales_97412.txt

所以我想使用以下命令(某种程度上)列出上述所有文件以及其他文件

hdfs dfs -ls /parent/*/sales_*.txt

但我找不到可行的解决方案。这有点挑战,因为需要从路径和文件名两个方面考虑模式

您可以使用 find 命令:

hdfs dfs -find /parent -name "sales_*.txt"

请注意 find 仅适用于 v2.7+。您可以阅读更多相关信息 here

如果您使用的是旧版本,您可以将输出通过管道传输到 grep:

hdfs dfs -ls -R -C /parent | grep "sales_.*\.txt$"

-R 用于递归,-C 仅用于文件名。