Adiciona Nome do Arquivo como primeira linha do arquivo no shell script

2

Olá e obrigado antecipadamente.

Eu preciso pegar um arquivo, inserir o nome do arquivo como a primeira linha do arquivo e depois passar para um nome diferente. Aqui está a ruga. Eu preciso pegar o arquivo mais antigo no formato ORIGFILE_YYYYMMDD.TXT e salvá-lo como NEWFILE.TXT . Para este exemplo, digamos que o nome do arquivo seja ORIGFILE_20151117.TXT

  1. Agarre o arquivo mais antigo ( ls -tr ORIGFILE*.txt )
  2. Adicione ORIGFILE_20151117.TXT como primeira linha do arquivo
  3. Renomear / mover ORIGFILE_20151117.TXT para NEWFILE.TXT
por user3191402 17.11.2015 / 22:46

2 respostas

0

Bem, vamos dividir isso em etapas simples:

#!/bin/bash

# First, let's get that file's name:
FILE=$(ls -rt ORIGFILE*.txt | tail -n1)
if [[ 0 -ne $? ]]; then
    echo "Unable to locate matching file.  Aborting." 1>&2
    exit 1
fi

# Now, create a new file containing the file's name:
echo "$FILE" > NEWFILE.TXT

# And append the contents of the old file into the new:
cat "$FILE" >> NEWFILE.TXT

# Finally, get rid of the old file: (uncomment if you're sure)
# rm "$FILE"
    
por 17.11.2015 / 22:54
0

Isso fará o truque:

f=$(ls -1tr ORIGFILE*.txt | head -1); echo $f | cat - $f > NEWFILE.txt && rm $f
    
por 17.11.2015 / 23:02