如何在HDFS根目录使用cat命令查看非.gz后缀的文件?
HDFS查看根目录下非.gz结尾文件的方法
由于HDFS原生命令没有直接的反向通配符支持,你可以通过以下两种方式实现需求:
方法一:结合ls、grep、awk和xargs
先列出根目录所有内容,过滤掉.gz文件,再提取路径并执行cat:
hdfs dfs -ls / | grep -v '\.gz$' | awk '{print $8}' | xargs hdfs dfs -cat
各部分作用:
hdfs dfs -ls /:列出HDFS根目录的所有条目grep -v '\.gz$':排除所有以.gz结尾的行awk '{print $8}':从ls输出中提取文件路径(ls输出的第8列为文件/目录路径)xargs hdfs dfs -cat:将提取到的文件路径作为参数,批量执行cat命令查看内容
处理带空格的文件名
如果根目录下存在文件名含空格的文件,需要调整awk命令来完整提取路径:
hdfs dfs -ls / | grep -v '\.gz$' | awk '{for(i=8;i<=NF;i++) printf "%s ", $i; print ""}' | xargs hdfs dfs -cat
方法二:使用hdfs dfs -find(部分HDFS版本支持)
如果你的HDFS集群支持find命令,可以直接用反向匹配参数:
hdfs dfs -find / -maxdepth 1 -type f ! -name "*.gz" | xargs hdfs dfs -cat
各部分作用:
-maxdepth 1:限制仅搜索根目录,不递归子目录-type f:仅匹配文件(排除目录)! -name "*.gz":排除所有文件名以.gz结尾的文件
注意:执行命令前确保你拥有目标文件的读取权限,否则会返回权限错误。
内容的提问来源于stack exchange,提问作者Utkarsh Goel
相关产品推荐
相关产品推荐

