signout
(usa Slackware)
Enviado em 18/11/2008 - 00:07h
Boas...
Kra..se entendi, voce quer mover os arquivos baseado na data...segue algo meio parecido que fiz uma vez, espero que ajude
É bem básico, da pra melhorar muita coisa ainda...espero que ajude
**********************************************************************************************
# !/bin/sh
#arquivo de log dos arquivos movidos
LOG=/var/log/arq_mov.log
#arquivo de log de erros durante o move
LOG_ERR=/var/log/arq_err.log
#diretorio de origem dos arquivos
DIR_ORIGEM=/tmp/teste
#Parametro (neste caso, mes 04)
MES_INICIO=04
#diretorio para onde serão movidos os arquivos
DIR_DESTINO=/tmp/testeb
for ARQ in `ls $DIR_ORIGEM`
do
MES=`ls -lrt "$DIR_ORIGEM/$ARQ" | awk '{print $6}' | awk -F- '{print $2}'`
if [ "$MES" == "$MES_INICIO" ];then
mv $DIR_ORIGEM/$ARQ $DIR_DESTINO 2> $LOG_ERR
if [ $? -eq 0 ]; then
echo "Arquivo $DIR_ORIGEM/$ARQ movido para $DIR_DESTINO" > $LOG
fi
fi
done
************************************************************************
Resumidamente, ele lê todos os arquivos do diretório de origem e armazena numa variavel $ARQ (for ARQ in `ls $DIR_ORIGEM`)
como esta dentro de um for para cada arquivo ele verifica a data, se o mes do arquivo for igual a variavel MES_INICIO entao
ele move o arquivo para o diretorio de destino ($DIR_DESTINO)....
Ex.:
no diretório /tmp/teste, temos o arquivo
-rw-r--r-- 1 root root 1808 2002-04-17 01:21 loadlin16c.txt
o comando ls -lrt "$DIR_ORIGEM/$ARQ" | awk '{print $6}' | awk -F- '{print $2}' retornara o 04, que faz parte da data do arquivo...
Como 04 foi definido, entao o arquivo será movido para o diretorio de destino...
Seria aconselhavel mudar o comando mv para cp...pelo menos para voce testar e ver se é isso que voce precisa...
Espero que ajude
[]s