Linuxでは、現在の日付と時刻の名前を持つファイルを作成する方法


11

現在の日付と時刻になるファイルを作成したい。touchコマンドでファイルを作成できます。また、dateコマンドで現在の時刻を取得できます。だから、どういうわけか2番目のコマンドを最初のコマンドにパイプする必要があると思います。どうやってやるの?

回答:


18

シェル式からの戻り値をtouch次の引数として使用します。

touch $( date '+%Y-%m-%d_%H-%M-%S' )

結果:egという名前のファイル2012-03-11_14-33-53

この回答は、あなたが使用していることを前提としていますbashmanページのセクションコマンド置換で説明されています)が、他のシェルは同じまたはわずかに異なるだけで動作します。


@MdGaoそして、manページの同じセクションで説明されています。私が答えた方がいいのですが、いくつかの理由があります
ダニエル・ベック

Markdownがバックティックを壊したため、コメントを削除しました。リンク@DanielBeckに感謝
Mengdi Gao

2
@gasan "引用符で囲むだけです。あなたはの出力想像することができるdateコマンドラインの一部を交換して、touch Sun Mar 11 14:48:31 CET 2012ファイル名を作成しSunMarなど、touch "Sun Mar 11 14:48:31 CET 2012"他の一方で(私はコロンが動作するどのように良いかわからないを除く)の罰金を動作します。
ダニエルベック

2
@gasanコマンドの置換やその他の解釈が許可されていないため、単一引用符は機能しません。Bashマニュアルの引用を参照てください。
slhck

2
@gasan違いは、単一引用符の内容が評価されないことです。でそれを試してみてくださいecho "$HOME"echo '$HOME'。そのため、の使用を提案しました"
ダニエルベック

0

よりシンプルなコマンドを使用できます

touch $(date | tr ' ' '-')

エレガントさはやや劣り、おそらく携帯性は劣りますが、それでも機能します。
スコット

これを読んでいるのは知っているので、もう少し詳しく説明します。ダニエルの答えは、既知の完全に制御された形式で結果を出します。(1)からの出力はdate通常、時間をhh:mm:ssとして示します。答えはコロンを含むファイル名になります。これにより、Windowsベースのファイルシステムでエラーが発生する可能性があります。(2)の単純な呼び出しからの生の出力dateはロケールに依存します。つまり、ローカル言語にカスタマイズされています。試してみてくださいLANG=de_DE dateLANG=fr_FR date例を参照してください。…(続き)
スコット

(続き)…(2a)そのため、システムの言語を変更する(可能性は低い?)イベント、またはシステムからスクリプトとデータファイルのコレクションをシステムに設定されているシステムに提供する言語が異なると、不一致が生じます。(これが本当の問題になるかどうかはわかりませんが、審美的な問題になります。)(2b)これを行うロケールは知りませんが、理論的にdateは日付を書き込むロケールがある可能性がありますmm / dd / yy(またはdd / mm / yy)。…(続き)
スコット

(続き)…このようなシステムに遭遇したことがある場合、スラッシュを含むファイル名があり、エラーが発生します。(3)ダニエルの答えは、lsまたはによって生成される辞書編集(つまり、アルファベット順)*が時系列に対応する結果を提供します。あなたの答えでは、すべてFriのファイルは、任意の辞書順でソートされたリストの先頭になり、AprそしてAug他のすべてのヶ月前に表示されます。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.