Ajuda explodir nomes, dividir variável em array

1. Ajuda explodir nomes, dividir variável em array

Victor Almeida
Victoralm

(usa Ubuntu)

Enviado em 15/08/2013 - 04:00h

Olá,

estou criando um script para backupear alguns arquivos. Os arquivos terão a nomenclatura no padrão nome_do_arquivo.data.tar.gz.
Como: imagens.2013-08-15.tar.gz
Questão 1: Gostaria de saber como explodir esse nome, tendo como separador os "." (pontos).
Questão 2: Como inverter o nome do arquivo e deixa-lo no padrão: gz.tar.data.nome_do_arquivo. (Essa é para fins de aprendizado msm...)

Criei uma variável que lê o conteúdo do diretório, mas esta acabou sendo uma variável única, e ñ um array... Dessa forma:
var=`ls`; 

Questão 3: Como fazer para explodir os nomes, tendo como separadores os espaços, gravando direto em uma variável do tipo array !?
Solução adotada:
*listar conteúdo do diretório
Comando: var=`ls`;
Saída do "echo $var": arquivo1.data.tar.gz arquivo2.data.tar.gz arquivo3.data.tar.gz ...
Saída para "echo "${var[1]}";": retorna nada, vazio
Comando: vararr=(${var// / });
Saída para "echo "${vararr[1]}";": arquivo2.data.tar.gz
Ou ainda:
for i in "${!vararr[@]}"
do
echo "$i=>${vararr[i]}"
done
Retorna:
0=>arquivo1.data.tar.gz
1=>arquivo2.data.tar.gz
2=>arquivo3.data.tar.gz
...


Ainda, estou querendo apagar os arquivos que tenham mais de 31 dias e acabei esbarrando em alguns problemas...
Questão 4: Como ficaria um código para apagar os arquivos com mais 31 dias !?
O código abaixo resolveria a questão !?
find ./ -maxdepth 1 -type f -mtime +31 | xargs rm -rf 


A intenção de apagar os arquivos com mais de 31 dias se deve ao fato de estarmos mantendo um "backup do backup" no Google Drive com o auxílio do grive. Logo, não dá pra abusar tanto assim do espaço...

Desde já agradeço muito a atenção !!


  


2. Re: Ajuda explodir nomes, dividir variável em array

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 15/08/2013 - 15:25h

Questão 1: Gostaria de saber como explodir esse nome, tendo como separador os "." (pontos).
Para delimitar por ponto voce pode usar:

cut -d.
ou ..
awk -F"."


Questão 2: Como inverter o nome do arquivo e deixa-lo no padrão: gz.tar.data.nome_do_arquivo. (Essa é para fins de aprendizado msm...)
Há várias formas, entre elas:

echo "nome_do_arquivo.data.tar.gz." | awk -F"." '{print $4"."$3"."$2"."$1}'



3. Re: Ajuda explodir nomes, dividir variável em array

Victor Almeida
Victoralm

(usa Ubuntu)

Enviado em 15/08/2013 - 15:51h

Opa, valeu alexandregms !!
Vou tentar da forma como vc indicou pq o código fica menor !!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts