56

ファイル名( "somefile.txt")の横に日付を追加したい。例:somefile_25-11-2009.txtまたはsomefile_25Nov2009.txtまたはその効果のあるもの

たぶん、スクリプトが実行するか、ターミナルウィンドウでいくつかのコマンドを実行します。Linux(Ubuntu)を使用しています。

前もって感謝します。

ああ、ファイルを特定のフォルダに保存するたびに、スクリプトまたはコマンドでファイル名を新しい日付に更新する必要があることを追加するのをほとんど忘れていましたが、以前のファイルは保持しています。したがって、最終的には次のようなファイルがフォルダにあります:filename_18Oct2009.txt、filename_9Nov2009.txt、filename_23Nov2009.txt

4

7 に答える 7

75

使用できますbackticks

$ echo myfilename-"`date +"%d-%m-%Y"`"

収量:

myfilename-25-11-2009
于 2009-11-25T09:27:26.787 に答える
49

ここには2つの問題があります。

1.日付を文字列として取得します

これはとても簡単です。オプションを指定してdateコマンドを使用するだけです。+バックティックを使用して、変数の値をキャプチャできます。

$ DATE=`date +%d-%m-%y` 

日付のマニュアルページ%で詳しく説明されているように、さまざまなオプションを使用して日付の形式を変更できます。

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
于 2009-11-25T09:30:15.113 に答える
24
cp somefile somefile_`date +%d%b%Y`
于 2009-11-25T09:29:03.910 に答える
2

私はラズベリーパイでそれを使用していますが、最初の答えはうまくいきません。知らない。だから私は上記の答えを組み合わせて、これを思いついた:

now=$(date +'%Y-%m-%d')
geany "OptionalName-${now}.txt"

geany などを使いたい場合

ここに画像の説明を入力 ここに画像の説明を入力

于 2021-06-16T03:37:52.033 に答える
0

仕様に完全に一致するもう少し複雑なソリューション

echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'`

最初の 'expr' は拡張子なしのファイル名を抽出し、2 番目の 'expr' は拡張子を抽出します

于 2009-11-25T09:39:17.533 に答える