我想从HDFS复制文件。我希望文件夹在复制文件时被排除在外。我尝试了hdfs dfs -copyToLocal,但它也复制了我测试过的目录。
是否有任何方式/命令复制文件,但不复制目录?
发布于 2019-04-09 00:05:19
@daemon12 12答案的一个变体,实现了同样的功能。
hadoop fs -ls <HDFS_DIR_PATH> | grep "^-" | \
awk '{print $8'} | hadoop fs -copyToLocal $(xargs) .awk '{print $8'}用于从ls输出中获取实际路径列。$(xargs)用于将几行路径串联到空格分隔的字符串中。发布于 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" .")}'用于复制文件路径列表。注意,在最后一个命令中,您可以使用任何本地文件系统路径,而不是.。
https://stackoverflow.com/questions/43383639
复制相似问题