我想写一个shell脚本,它将迭代hdfs目录中的所有文件,访问每个文件,并在特定目录中创建每个文件的时间。
最初,我为linux文件系统准备了一个脚本,它运行良好,我的shell脚本根据文件创建的数据进行迭代并获取文件,如下所示-
for i in /home/user/Downloads/myDIR/*
do
echo $i
tm=$(stat -c %y $i)
echo $tm | cut -c 1-10
tm2=$(echo $tm | cut -c 1-10)
echo $tm2
if [ "$tm2" = "$(date +%F)" ]
then
cp $i /home/user/OutputDir/
echo "Copy Done"
fi
done
这个脚本运行得很好,但是当我对hdfs文件实现相同的逻辑时,它就不工作了。
我已经将linux路径替换为hdfs,如下所示-
for i in `hadoop fs -ls /TestDir
但这不是在hdfs中迭代文件。
这里有什么我不知道的吗?
提前帮忙。
1条答案
按热度按时间1l5u6lss1#
您还需要替换这些命令
stat -c %y $i
至hadoop fs -stat '%y' $i
cp $i /home/user/OutputDir/
至hadoop fs -copyToLocal $i /home/user/OutputDir/
具有hadoop-2.7.2选项的命令列表https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/filesystemshell.html