在具有指定文件数量的 hadoop 目录中移动文件

在具有指定文件数量的 hadoop 目录中移动文件

我希望及时移动 Hadoop 目录中的文件。

hadoop 目录包含 1000 个具有相同扩展名的文件。我希望每 10 分钟移动其中的 100 个。我可以设置一个 cron 作业来每 10 分钟移动一次文件,但我不知道如何指定要移动的文件数量。

hdfs dfs -ls /src/ | tail -100 | xargs hdfs dfs -mv {} / dest/

有什么命令可以使用吗?

提前致谢。

答案1

您可以像这样使用 mv:mv -t target file1 file2 file3 ...

ls | head -n 100 | xargs mv -t destination

答案2

那么使用这样的脚本怎么样:

#!/bin/bash

Source="/where/they/are/now/*"
Destination="/where/they/will/go"

while true; do
  count=0
  for file in $Source; do
    if [ $((count++)) -eq 100 ];then
      break
    else mv "$file" "$Destination"
    fi
  done
  sleep 10m
done

答案3

为了子孙后代:

hdfs dfs -mv `hdfs dfs -ls -C {your_src_hdfs_path} | head -{number_of_files}` {your_dest_hdfs_path}

相关内容