ども、かっぱです。
tl;dr
以下のようにファイル名から拡張子とファイル名を分割してファイル部分に日付(epoch time)をつけた上で元の拡張子を付けるシチュエーションが発生した。
旧ファイル名:foo.txt 新ファイル名:foo_${epoch time}.txt
参考
te2u.hatenablog.jp
d.hatena.ne.jp
有難うございます。
メモ
こんな感じで
#!/bin/bash FILE_NAME=${1} # 末尾から最短一致したパターンを削除する(拡張子を削除する = ファイル名のみ取得出来る) FILE=${FILE_NAME%.*} # 先頭から最長一致したパターンを削除する(ファイル名を削除する = 拡張子のみ取得出来る) EXTENSION=${FILE_NAME##*.} DATE=`date +%s` echo "旧ファイル名: ${FILE_NAME}" # 拡張子無しファイルの対応 if [ "${FILE}" == "${EXTENSION}" ];then FILE_NAME=${FILE}_${DATE} EXTENSION="" else FILE_NAME=${FILE}_${DATE}.${EXTENSION} fi echo "ファイル: ${FILE}" echo "拡張子: ${EXTENSION}" echo "新ファイル名: ${FILE_NAME}"
試してみる
# # 拡張子付きファイル # $ ./replce.sh foo.txt 旧ファイル名: foo.txt ファイル: foo 拡張子: txt 新ファイル名: foo_1457570906.txt # # 拡張子なしファイル # $ ./replce.sh foo 旧ファイル名: foo ファイル: foo 拡張子: 新ファイル名: foo_1457570909
bash って…
奥深い。