Localicar e mover arquivos criados no ano passado (2016) para uma pasta nova.

1. Localicar e mover arquivos criados no ano passado (2016) para uma pasta nova.

Tiago Garcia Xavier
garcia-conecto

(usa Outra)

Enviado em 23/02/2017 - 15:10h

Boa tarde amigos. Bem vindo pra mim. 1ª pergunta desse conceituado site de pesquisa:

Tenho uma pasta com milhões de arquivos de backup criados durante todo o ano de 2016. Gostaria de localizar e mover todos para uma pasta especifica. Nessa pasta estão guardados arquivos de todas as datas desde 2015 a 2017 e gostaria de organiza-las em pastas separadas.
Obrigado.


  


2. Re: Localicar e mover arquivos criados no ano passado (2016) para uma pasta nova.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/02/2017 - 13:18h

garcia-conecto escreveu:

Boa tarde amigos. Bem vindo pra mim. 1ª pergunta desse conceituado site de pesquisa:

Tenho uma pasta com milhões de arquivos de backup criados durante todo o ano de 2016. Gostaria de localizar e mover todos para uma pasta especifica. Nessa pasta estão guardados arquivos de todas as datas desde 2015 a 2017 e gostaria de organiza-las em pastas separadas.
Obrigado.


Boa tarde Garcia, seguem duas sugestões:
1ª Sugestão
#!/bin/bash
DIR_ALVO="DIRETORIO_ALVO" #AONDE ESTÃO OS ARQUIVOS QUE QUER SALVAR
DIR_DEST="DIRETORIO DESTINO" #PARA ONDE VÃO OS ARQUIVOS. . .
cd $DIR_DEST;mkdir "20"{15..17};cd - #CRIA AS PASTAS: 2015 2016 E 2017
ls --full-time $DIR_ALVO|egrep '^-' > ARQUIVOS.txt #GERA LISTA COM OS ARQUIVOS QUE SERÃO MOVIDOS

for ANO in {2015..2017};do
awk -F" " '$6 ~ /'$ANO'-..-../ {print "'$DIR_DEST'""/""'$ANO'""/"$9}' ARQUIVOS.txt > ARQS_${ANO}.txt
while read -r $arq;do
mv $DIR_ALVO/$arq $arq #MOVE PARA A PASTA $DESTINO/$ANO
done<ARQS_${ANO}.txt
done


2ª Sugestão

#!/bin/bash
DIR_ALVO="DIRETORIO_ALVO" #AONDE ESTÃO OS ARQUIVOS QUE QUER SALVAR
DIR_DEST="DIRETORIO DESTINO" #PARA ONDE VÃO OS ARQUIVOS. . .
cd $DIR_DEST;mkdir "20"{15..17};cd - #CRIA AS PASTAS: 2015 2016 E 2017
ls --full-time $DIR_ALVO|egrep '^-' > ARQUIVOS.txt #GERA LISTA COM OS ARQUIVOS QUE SERÃO MOVIDOS

while IFS=" " read -r C1 C2 C3 C4 C5 C6 C7 C8 C9;do
ANO_ARQ=$(awk -F"-" '{print $1}' <<< "$C6")

(($ANO_ARQ == 2015)) && mv $DIR_ALVO/$C9 $DIR_DEST/2015/$C9 #MOVE PARA A PASTA 2015
(($ANO_ARQ == 2016)) && #MOVE PARA A PASTA 2016
(($ANO_ARQ == 2017)) && #MOVE PARA A PASTA 2017

done<ARQUIVOS.txt

Como não testei, aconselho testar, alterando o comando "mv" para "echo"
Se a resposta foi satisfatória, marque-a como A MELHOR . . . .

Att.:
Marcelo Oliver




3. Localicar e mover arquivos criados no ano passado (2016) para uma pasta nova.

Tiago Garcia Xavier
garcia-conecto

(usa Outra)

Enviado em 24/02/2017 - 13:41h

Obrigado amigo Marcelo. Só um detalhe que não mencionei na descrição:

Os arquivos não estão "renomeados" com ano ou nem data e sim algo semelhante a "backuplj10_pdv05.zip" (nesse padrão).

Os 2 scripts vão ser tratados de acordo que a Data de "Criação/modificação" deles?

Obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts