hdfs:拆分 ls 输出

hdfs:拆分 ls 输出

在 hdfs 上,命令的输出ls如下所示:

drwxrwxr-x  5 matteorr matteorr  4096 Jan 10 17:37 /data/Cluster
drwxr-xr-x  2 matteorr matteorr  4096 Jan 19 10:43 /data/Desktop
drwxrwxr-x  9 matteorr matteorr  4096 Jan 20 10:01 /data/Developer
drwxr-xr-x 11 matteorr matteorr  4096 Dec 20 13:55 /data/Documents
drwxr-xr-x  2 matteorr matteorr 12288 Jan 20 13:44 /data/Downloads
drwx------ 11 matteorr matteorr  4096 Jan 20 14:01 /data/Dropbox
drwxr-xr-x  2 matteorr matteorr  4096 Oct 18 18:43 /data/Music
drwxr-xr-x  2 matteorr matteorr  4096 Jan 19 22:12 /data/Pictures
drwxr-xr-x  2 matteorr matteorr  4096 Oct 18 18:43 /data/Public
drwxr-xr-x  2 matteorr matteorr  4096 Oct 18 18:43 /data/Templates
drwxr-xr-x  2 matteorr matteorr  4096 Oct 18 18:43 /data/Videos

/data我将通过脚本 shell检索所有子目录的名称,

我怎样才能做到这一点?

答案1

假设输出中没有其他字段包含/,并且没有目录或文件名包含换行符,您可以执行以下操作:

hdfs dfs -ls | grep '^d' | cut -d/ -f3
  • grep命令选择以 开头的行d,标记目录
  • 然后,推荐cut选择由 分隔的第三个字段/(第一个是文件路径的信息,第二个是目录名称data

Awk 替代方案:

hdfs dfs -ls | awk -F/ '/^d/{print $3}'

相关内容