Adicione uma string do arquivo ao nome do arquivo

3

Eu preciso renomear os arquivos para incluir uma string encontrada na primeira linha.

ex:

[acoder@test]# head -1 FILE001.DAT
XYZ123

Aqui está o meu melhor palpite:

for file in /some/dir/*.DAT
do
        CODE='head -1 "$file"'
        echo "${file%.DAT}.$CODE.DAT"
done

saída:

.DATa/some/dir/FILE001.XYZ123

esperando ver:

/some/dir/FILE001.XYZ123.DAT

O que está errado?

    
por a coder 24.01.2017 / 20:02

1 resposta

4

Se o arquivo vier de um sistema Windows, ele poderá ter um retorno de carro no final.

Você pode corrigir isso atribuindo à variável CODE assim:

CODE="$( head -n 1 "$file" | tr -d '\r' )"
    
por 24.01.2017 / 20:09