Funcoes de Data

1. Funcoes de Data

Juda Benhur
Paulistinha

(usa Red Hat)

Enviado em 14/11/2008 - 04:04h

Pessoal,

Tenho um diretorio com muitissimos arquivos, cerca de 20 mil em uma unica pasta. Estou precisando move-lo para uma determinada pasta. Gostaria de fazer-los, tendo por criterio, a data do arquivo, modendo-os por exemplo, todos os arquivos criados no mes de julho.

Estou tendo dificuldade em montar um script para essa funcao.

Sugestoes?

Grato.


  


2. Re: Funcoes de Data

Ruy Minoru Ito Takata
ErhnamDjinm

(usa Gentoo)

Enviado em 14/11/2008 - 08:18h

Você precisa fazer um find procurando pela data desejada, e jogar o resultado para um exec


3. Re: Funcoes de Data

Juda Benhur
Paulistinha

(usa Red Hat)

Enviado em 14/11/2008 - 08:35h

Ola,

ainda assim, meu problema persiste. já queimei tanto a cabeça que nao estou conseguindo entender como colocar isso em um script.

sugestoes?


4. Re: Funcoes de Data

Takahashi
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


5. Re: Funcoes de Data

Vítor De Araújo
ux386

(usa Debian)

Enviado em 21/11/2008 - 23:33h

#!/bin/bash
find . -maxdepth 1 -printf '%Tm:%p\n' | while read line; do
month="${line%%:*}"
file="${line#*:}"
[[ -d $month ]] || mkdir "$month"
mv -v "$file" "$month/"
done

Esse script vai criar uma pasta para cada mês e separar os arquivos por mês...







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts