Como adiciono a data atual antes da extensão do arquivo para vários arquivos em um diretório?

0

Como eu adiciono a data atual antes da extensão do arquivo para vários arquivos em um diretório?

Arquivos originais:

Expenses.log
Allowances.log

Saída:

Expenses_20170624.log
Allowances_20170624.log

Este comando acrescenta a data após a extensão do arquivo. : (

for file in *; do mv "$file" "${file}_$(date +"%d%m%Y")"; done
    
por user237577 24.06.2017 / 19:54

2 respostas

3

Use a expansão de parâmetro para separar a extensão:

#! /bin/bash
date=$(date +%Y%m%d)
for file in * ; do
    basename=${file%.*}    # Remove extension
    extension=${file##*.}  # Remove basename
    mv "$file" "$basename"_"$date.$extension"
done
    
por 24.06.2017 / 19:58
0

Com o comando curto rename (implementação Perl ):

rename 's/\.([^.]+)$/_'$(date +"%d%m%Y")'.$1/' *
    
por 24.06.2017 / 20:06