我希望及时移动 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}