首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用“`copyToLocal`”时排除目录

问如何在使用“`copyToLocal`”时排除目录
EN

Stack Overflow用户
提问于 2017-04-13 04:39:55
回答 2查看 1.3K关注 0票数 0

我想从HDFS复制文件。我希望文件夹在复制文件时被排除在外。我尝试了hdfs dfs -copyToLocal,但它也复制了我测试过的目录。

是否有任何方式/命令复制文件,但不复制目录?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-09 00:05:19

@daemon12 12答案的一个变体,实现了同样的功能。

代码语言:javascript
复制
hadoop fs -ls <HDFS_DIR_PATH> | grep "^-" | \
awk '{print $8'} | hadoop fs -copyToLocal $(xargs) .
  • awk '{print $8'}用于从ls输出中获取实际路径列。
  • $(xargs)用于将几行路径串联到空格分隔的字符串中。
票数 1
EN

Stack Overflow用户

发布于 2017-04-13 05:40:09

据我所知,-copyToLocal没有直接标志只能复制文件。但是您可以使用linux grep将目录排除在要复制的数据之外。就像这样:

hdfs dfs -ls <HDFS_DIR_PATH> | grep "^-" | awk 'BEGIN{FL=""} {FL=FL" "$8} END{system("hdfs dfs -copyToLocal "FL" .")}'

哪里,

  • hdfs dfs -ls <HDFS_DIR_PATH>用于列出所有文件和目录
  • grep "^-"是用来排除目录的
  • awk 'BEGIN{FL=""} {FL=FL" "$8}用于创建只有文件路径的字符串。
  • END{system("hdfs dfs -copyToLocal "FL" .")}'用于复制文件路径列表。

注意,在最后一个命令中,您可以使用任何本地文件系统路径,而不是.。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43383639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档