divide o nome do arquivo no loop e faça referência a cada parte

2

Eu tenho um diretório com uma lista de arquivos, por exemplo

file.name.aaaaaa.111111
file.name.bbbbbb.222222
file.name.cccccc.333333

Eu preciso de uma maneira de pegar cada arquivo, dividi-lo no "." e então usando cada seção, ele será passado para uma consulta mysql.

Eu tenho o seguinte:

for file in $localdir/file.name.*
do
    filename='basename "$file"'
    for i in $(echo $filename | tr "." "\n")
    do
        echo $i
    done
done

Como posso me referir às partes individuais? como eu só preciso de 'aaaaa' e '11111' para a consulta do MySQL?

    
por IGGt 26.10.2015 / 17:24

1 resposta

2

Para obter apenas aaaaaa usando cut com . sendo usado como o delimitador:

echo $filename | cut -f 3 -d '.'

Para obter apenas 111111 , basta alterar o número do campo:

echo $filename | cut -f 4 -d '.'

Para obter a segunda parte inteira, você pode usar a manipulação de string interna do Bash:

echo ${filename#*.name.}
    
por 26.10.2015 / 17:43