工做中有些需求須要從Hadoop HDFS上把數據拉倒本地,不少時候咱們的需求都是要在get一部分文件的同時並排除掉指定文件。好比下圖,我要在get下列csv的同時排除掉指定的engineerParameter.csv,那我又不想一個個get這些csv。web
這個時候grep和awk命令就派上場了,以下oop
hadoop fs –ls GivenPath | grep –v CertianExcludeFile | awk 'BEGIN{FL=""}{FL=FL" "$8} END{system("hadoop fs -get "FL" .")}'3d
這裏簡單分段解析下這行命令:orm
(1) hadoop fs –ls GivenPath:列出指定HDFS目錄下的文件信息cdn
(2) grep –v CertianExcludeFile:方向匹配不包含指定名稱或者通配字符串的文件名blog
(3) BEGIN{FL=""}{FL=FL" "$8}:取ls後列出的文件包含路徑的文件名信息及將其連同空格符拼接成一個字符串。ip
(4) END{system("hadoop fs -get "FL" .")}:將上步得到的字符串get到當前目錄。hadoop
引伸思考下,那若是我想排除多個指定文件怎麼辦呢?字符串
能夠再加一個grep –v 以下圖:get