Eu tenho alguns arquivos de 200k em uma pasta, eu quero organizá-los com base no tempo de nascimento (tempo de criação). Eu escrevi o script abaixo, mas é muito lento. Eu quero melhorar isso. como posso fazer isso?
#!/usr/bin/env bash
echo Input directory is $1
input_directory=$1
## Find those files that are older than a month
inputfiles=$(hadoop fs -ls $input_directory | sed '1d;s/ */ /g' | cut -d\ -f8)
for filename in $inputfiles
do
echo processing $filename
hadoop fs -test -d $filename
lastcommand=$?
if [ "$lastcommand" == "1" ];then
year=$(date -d "'hadoop fs -stat $filename'" +%Y)
month=$(date -d "'hadoop fs -stat $filename'" +%m)
hadoop fs -test -d $input_directory/$year-$month
lastcommand2=$?
[[ "$lastcommand2" == "1" ]] && hadoop fs -mkdir -p $input_directory/$year-$month;
hadoop fs -mv $filename $input_directory/$year-$month/
else
echo not a file
fi
done
Tags hadoop linux shell-script file-copy