我有一个源文件夹,它由嵌套的子目录组成。我想将源和嵌套子目录中所有超过2天的.txt文件移动到hadoop中的目标目录。类似这样的操作可能会将文件从源移动到目标。
hadoop fs -mv /user/source/*.txt /user/target
如何移动超过2天的.txt文件?
nuypyhwy1#
您可以使用find commands漂亮的参数,它允许我们使用一些命令-exec
find /user/source/*.txt -type f -mtime 2 -exec mv '{}' /user/target \;
但有时这会给文件带来一些问题,因此在这种情况下,您也可以尝试使用此脚本。您需要从subdir1/subdir2/创建目录树-您可以这样做,例如:
find /user/source/*.txt -type f -mtime +2 -print0 | while IFS= read -r -d '' file;do dir="${file%/*}" mkdir -p ../yourfilearchive/"$dir" mv "$file" ../yourhadoopdir/"$file" done
这个脚本将简单地重新创建文件,而不是将它们移动到您的目录中。当然,这些都只适用于超过2天的txt文件,如果您想使用hdfs自己的命令,我找到了一个很好的答案。使用shell脚本获取在hadoop中最近5分钟内创建的文件
1条答案
按热度按时间nuypyhwy1#
您可以使用find commands漂亮的参数,它允许我们使用一些命令-exec
但有时这会给文件带来一些问题,因此在这种情况下,您也可以尝试使用此脚本。您需要从subdir1/subdir2/创建目录树-您可以这样做,例如:
这个脚本将简单地重新创建文件,而不是将它们移动到您的目录中。
当然,这些都只适用于超过2天的txt文件,如果您想使用hdfs自己的命令,我找到了一个很好的答案。
使用shell脚本获取在hadoop中最近5分钟内创建的文件