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
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
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
Com o comando curto rename
(implementação Perl ):
rename 's/\.([^.]+)$/_'$(date +"%d%m%Y")'.$1/' *
Tags bash rename awk sed shell-script