msoliver
(usa Debian)
Enviado em 29/05/2016 - 01:35h
#Marcossales escreveu:
Na verdade a lista tem três colunas, com um formato csv, padrão, então selecionei a coluna, ai então os nomes:
Segue um trecho do código:
sed -n '2,$p' presentes.csv | cut -f2 -d',' | tr " " "_" | tr [:upper:] [:lower:] > /tmp/lista_$$
lista="/tmp/lista_$$"
NF=$(sed -n '2,$p' $lista | wc -l )
# Como ${#str_var} retorna o número de caracteres de var, entao
SZ=${#NF} #retornando a quantidade de linhas
contador=1
for i in *.txt
do
nome=$(sed -ne ""$contador"p" /tmp/lista_$$)
#echo "$nome"
# mv "$i" "$nome" #empaquei
contador=$( expr $contador + 1 )
done
Quebrei a cabeça mais um pouco e funcionou, não muito bem enxuto, mas funcionou.
Se puderem sugerir melhorias. ;)
Boa noite, Marcossales.
Sugestão:
Gere um txt com a listagem dos 70 arquivos.
ls -1 >> 70Arquivos.txt
"Pegue" a quantidade de registros na "lista"
NReg=$(awk 'END {print NR}' lista.txt)
Faça:
for ((x=1;x<=NReg;x++));do
NOMENV=$(awk -F"," 'NR == '$x' {print $2}' lista.txt) #PEGA O CAMPO 02
NOMEAT=$(sed -n "$x"p 70Arquivos.txt)
rename 's/'$NOMEAT'/'$NOMENV'.txt/' *.txt
done
É isso
att.:
marcelo
----------------------------------------------------------------------
Editado.
Para ter a certeza que "VAI PEGAR" o ARQUIVO correto, mesmo que a listagem em 70Arquivos.txt não esta na ordem.
Altere:
NOMEAT=$(sed -n "$x"p 70Arquivos.txt)
Para
NOMEAT=$(egrep '^([[:alpha:]]+'$x'.txt)$' 70Arquivos.txt)