CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

1. CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2022 - 20:42h

Olá Pessoal!

Preciso de ajuda para criar um script que leia o nome do arquivo e crie pastas de acordo com uma parte do nome do arquivo, por exemplo:

Arquivo: TabelaIBPTaxSP22.1.A.csv

O script deverá criar uma pasta com o nome "SP" e depois mover o arquivo para dentro dessa pasta com o nome: "Tabela.csv".


Os arquivos são todos com o mesmo nome, o que muda é apenas a sigla do estado no nome do arquivo, então esse script deverá criar uma pasta com o nome de cada estado.

Exemplo dos arquivos:

TabelaIBPTaxSP22.1.A.csv
TabelaIBPTaxSE22.1.A.csv
TabelaIBPTaxRS22.1.A.csv
....
Já tem um tópico fechado com um assunto parecido, mas não funcionou pra mim. Se alguém puder me ajudar com um exemplo de script eu agradeço.

Muito Obrigado.


  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 19/01/2022 - 23:41h


v aí se te ajuda

#!/bin/bash

for x in `ls *.csv`;do
dir=`echo $x | cut -b 13-14`
mkdir $dir
mv $x $dir/Tabela.csv
done



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------



3. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 21:55h

Fernando_ubuntu escreveu:

Olá Pessoal!

Preciso de ajuda para criar um script que leia o nome do arquivo e crie pastas de acordo com uma parte do nome do arquivo, por exemplo:

Arquivo: TabelaIBPTaxSP22.1.A.csv

O script deverá criar uma pasta com o nome "SP" e depois mover o arquivo para dentro dessa pasta com o nome: "Tabela.csv".


Os arquivos são todos com o mesmo nome, o que muda é apenas a sigla do estado no nome do arquivo,
então esse script deverá criar uma pasta com o nome de cada estado.

Exemplo dos arquivos:

TabelaIBPTaxSP22.1.A.csv
TabelaIBPTaxSE22.1.A.csv
TabelaIBPTaxRS22.1.A.csv
....
Já tem um tópico fechado com um assunto parecido, mas não funcionou pra mim.
Se alguém puder me ajudar com um exemplo de script eu agradeço.
Muito Obrigado.

Boa noite Fernando
Qual a duvida?
Onde está com dificuldade...?

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2022 - 22:03h

Olá Marcelo, estou usando como exemplo um script que você mesmo postou em um tópico antigo que já se encontra encerrado, porém tá dando erro no IF e acredito que tá errado também a parte do comando "sed". Tá da seguinte forma, mas precisaria adaptar para minha necessidade.

#!/bin/bash
DIR="/home/fernando/teste/*.csv"
for arq in $(ls -l ${DIR});do
arq=$(sed -r 's/.//15g' <<< "$arq");
read -a cmp <<< "$arq"
if [[ $(${#cmp[@]}) -eq 4 ]]; then
[[ ! -e ${cmp[1]} ]] && mkdir ${cmp[1]};
[[ ! -e ${cmp[1]}//${cmp[2]} ]] && mkdir ${cmp[1]}/${cmp[2]};
mv ${cmp[3]} ${cmp[1]}/${cmp[2]};
else
echo -e "Fora do Padrão\n";
fi
done





5. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 22:38h


Fernando_ubuntu escreveu:

Olá Marcelo, estou usando como exemplo um script que você mesmo postou em um tópico antigo que já se encontra encerrado, porém tá dando erro no IF e acredito que tá errado também a parte do comando "sed". Tá da seguinte forma, mas precisaria adaptar para minha necessidade.

#!/bin/bash
DIR="/home/fernando/teste/*.csv"
for arq in $(ls -l ${DIR});do
arq=$(sed -r 's/.//15g' <<< "$arq");
read -a cmp <<< "$arq"
if [[ $(${#cmp[@]}) -eq 4 ]]; then
[[ ! -e ${cmp[1]} ]] && mkdir ${cmp[1]};
[[ ! -e ${cmp[1]}//${cmp[2]} ]] && mkdir ${cmp[1]}/${cmp[2]};
mv ${cmp[3]} ${cmp[1]}/${cmp[2]};
else
echo -e "Fora do Padrão\n";
fi
done

Fernando, o script acima não atende a sua necessidade...
Teste o comando abaixo, deve mostrar a sigla do Estado.
ls -l /home/fernando/teste/*.csv|awk 'BEGIN{FIELDWIDTHS="12 2 10"}{print "Estado:",$2}' 


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2022 - 22:45h


Então, esse comando retornou o seguinte resultado, mas não é o que preciso, eu preciso de um script que leia os arquivos da pasta e crie o diretório com o nome dos estados e em seguida mova cada arquivo para o diretório do seu estado correspondente.


Resultado do seu comando:

/home/fernando# ls -l /home/fernando/teste/*.csv|awk 'BEGIN{FIELDWIDTHS="12 2 10"}{print "Estado:",$2}'
Estado: r
Estado: f



No exemplo que te passei, se tratava de um tópico em que a pessoa queria criar diretório com o nome dos álbuns das músicas de acordo com os nomes e mover as músicas dentro dos respectivos diretórios, que seria quase o que preciso, mas com as planilhas.

Att. Fernando.



7. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 23:15h


Fernando_ubuntu escreveu:


Então, esse comando retornou o seguinte resultado, mas não é o que preciso, eu preciso de um script que leia os arquivos da pasta e crie o diretório com o nome dos estados e em seguida mova cada arquivo para o diretório do seu estado correspondente.


Resultado do seu comando:

/home/fernando# ls -l /home/fernando/teste/*.csv|awk 'BEGIN{FIELDWIDTHS="12 2 10"}{print "Estado:",$2}'
Estado: r
Estado: f



No exemplo que te passei, se tratava de um tópico em que a pessoa queria criar diretório com o nome dos álbuns das músicas de acordo com os nomes e mover as músicas dentro dos respectivos diretórios, que seria quase o que preciso, mas com as planilhas.

Att. Fernando.

Estranho a saída não vir o esperado.
Conforme postado:
TabelaIBPTaxSP22.1.A.csv
São 12 caracteres: TabelaIBPTax
2 com a sigla
E o final....

Vocé tem o gawk instalado?

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



8. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2022 - 23:19h

Sim

/home/fernando# apt-get install gawk
Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto
gawk is already the newest version (1:4.1.4+dfsg-1).




9. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 23:40h

Exemplo:
cat arq.txt
TabelaIBPTaxSP22.1.A.csv
TabelaIBPTaxSE22.1.A.csv
TabelaIBPTaxRS22.1.A.csv

awk 'BEGIN{FIELDWIDTHS="12 2 10"}{print $2}' arq.txt
SP
SE
RS


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



10. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2022 - 23:51h


Mauriciodez escreveu:


v aí se te ajuda

#!/bin/bash

for x in `ls *.csv`;do
dir=`echo $x | cut -b 13-14`
mkdir $dir
mv $x $dir/Tabela.csv
done


Isso, era isso que estava precisando, muito obrigado. Deu certo.
------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------






11. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/01/2022 - 00:02h


Fernando_ubuntu escreveu:
Isso, era isso que estava precisando, muito obrigado. Deu certo.


Bom que resolveu ... marque o tópico como "RESOLVIDO" e depois assinale a "MELHOR RESPOSTA".

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




12. Re: CRIAR PASTAS DE ACORDO COM NOMES DE ARQUIVOS

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/01/2022 - 00:10h

ls -l /home/fernando/teste/*.csv|awk -F '' 'system("mv "$0" "$13 $14)' 








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts