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