将早于X天的文件移动到HDFS中的目标目录

时间:2017-08-18 17:51:51

标签: shell hadoop

我有一个源文件夹,它由嵌套的子目录组成。我想移动所有超过2天的.txt文件,存在于 来源&嵌套的子目录到Hadoop中的目标目录。

这样的事情可能会将文件从源移动到目标。

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

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

1 个答案:

答案 0 :(得分:0)

你可以使用find命令,这个参数允许我们使用一些命令-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

此脚本将简单地重新创建您的文件,而不是将它们移动到您的目录中。

如果您想使用hdfs自己的命令,那么这些文件将仅适用于超过2天的txt文件我找到了很好的答案。

Get files which are created in last 5 minutes in hadoop using shell script