将超过x天的文件移动到hdfs中的目标目录

eblbsuwk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(429)

我有一个源文件夹,它由嵌套的子目录组成。我想将源和嵌套子目录中所有超过2天的.txt文件移动到hadoop中的目标目录。
类似这样的操作可能会将文件从源移动到目标。

hadoop fs -mv /user/source/*.txt /user/target

如何移动超过2天的.txt文件?

nuypyhwy

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分钟内创建的文件

相关问题