ディレクトリ内の複数のファイルのファイル拡張子の前に現在の日付を追加するには?

ディレクトリ内の複数のファイルのファイル拡張子の前に現在の日付を追加するには?

ディレクトリ内の複数のファイルのファイル拡張子の前に現在の日付を追加するには?

ソースファイル:

Expenses.log
Allowances.log

出力:

Expenses_20170624.log
Allowances_20170624.log

このコマンドはファイル拡張子に日付を追加します。 :(

for file in *; do mv "$file" "${file}_$(date +"%d%m%Y")"; done

答え1

パラメータ拡張を使用して拡張を分離します。

#! /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

答え2

ストラップが短いrename注文する(真珠実装する):

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

関連情報