ファイル名(「somefile.txt」)の横に日付を追加します。例:somefile_25-11-2009.txtまたはsomefile_25Nov2009.txtまたはその他の効果
おそらく、スクリプトが実行するか、ターミナルウィンドウで何らかのコマンドが実行されます。 Linux(Ubuntu)を使用しています。
前もって感謝します。
ああ、スクリプトまたはコマンドは、ファイルを特定のフォルダーに保存するたびにファイル名を新しい日付に更新するが、以前のファイルを保持することを追加するのを忘れていました。そのため、最終的に次のようなファイルがフォルダーにあります:filename_18Oct2009.txt、filename_9Nov2009.txt、filename_23Nov2009.txt
ここには2つの問題があります。
1。日付を文字列として取得します
これは非常に簡単です。 date
コマンドと+
オプションを使用するだけです。バックティックを使用して、変数の値をキャプチャできます。
$ DATE=`date +%d-%m-%y`
date man page で説明されているように、さまざまな%
オプションを使用して日付形式を変更できます。
2。ファイルを名前と拡張子に分割します
これは少し複雑です。ファイル名に.
が1つしかないと思う場合は、.
を区切り文字としてcut
を使用できます。
$ NAME=`echo $FILE | cut -d. -f1
$ EXT=`echo $FILE | cut -d. -f2`
ただし、ファイル名に複数の.
が含まれる場合は機能しません。 bash
を使用している場合-おそらく-いくつかの 変数展開を行うときにパターンを一致させることができるbashマジック :
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
それらをまとめると、次のようになります。
$ FILE=somefile.txt
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
$ DATE=`date +%d-%m-%y`
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE
somefile_25-11-09.txt
そして、読みやすさをあまり気にしないのであれば、すべての作業を1行で(異なる日付形式で)行います。
$ FILE=somefile.txt
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE
somefile_25Nov09.txt
バックティックを使用できます。
$ echo "myfilename-"`date +"%d-%m-%Y"`
利回り:
myfilename-25-11-2009
cp somefile somefile_`date +%d%b%Y`
仕様に完全に一致するもう少し複雑なソリューション
echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'`
最初の 'expr'は拡張子なしのファイル名を抽出し、2番目の 'expr'は拡張子を抽出します