ファイル名に日付と時刻を追加するには?

ファイル名に日付と時刻を追加するには?

コマンドを実行しようとしていますが、出力ファイル名に日付と時刻を入力したいと思います。

以下は、実行したいサンプルコマンドです。

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

日付/時刻形式は、下線付きの適切な形式にすることができます。 AMとPMが利用できない場合は、UTCも使用できます。

答え1

現在の日付/時刻をファイル名として使用するには、次のものを使用できますdateコマンドの置き換え

 $ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"

2016_04_25_10_30_AM.logこれにより、/etc/mtabmd5ハッシュをそのコンテンツとして使用してファイルが生成されます(たとえ現在の日時であるにもかかわらず)。

12時間形式のタイムスタンプを含むファイル名は、必要に応じて名前でソートできない場合があります。 24時間形式のタイムスタンプを使用すると、この問題を回避できます。

特定の日付形式を使用する必要がない場合は、ISO 8601準拠の日付/時刻形式を使用することをお勧めします。有効なISO 8601日付/時刻表現を生成する方法のいくつかの例は次のとおりです。

 $ date +"%FT%T"
 2016-04-25T10:30:00

 $ date +"%FT%H%M%S"
 2016-04-25T103000

 $ date +"%FT%H%M"
 2016-04-25T1030

 $ date +"%Y%m%dT%H%M"
 20160425T1030

「より安全な」ファイル名が必要な場合(たとえば、Windowsとの互換性のため)、時間部分からコロンを省略できます。

上記の例では、ローカルシステム時間を想定しています。複数のタイムゾーンにわたって一貫した時間表現が必要な場合は、タイムゾーンオフセットまたはUTCを指定する必要があります。date次のように、呼び出しのフォーマット部分に "%z"を使用してISO 8601準拠のタイムゾーンオフセットを取得できます。

 $ date +"%FT%H%M%z"
 2016-04-25T1030-0400

次のようにフラグを設定し、日付/時刻文字列の末尾に「Z」を追加して時刻がUTCであることを示す場合は、呼び出しからdateUTC時刻を取得できます。-u

 $ date -u +"%FT%H%MZ"
 2016-04-25T1430Z

答え2

選択した日付文字列をパス/ファイル名の途中に挿入するために必要な(複雑な)構文の説明を追加するだけです。これはすべてのコマンドで機能するため、ファイルを新しい場所にコピーし、ファイル名にタイムスタンプを追加する方法を説明します。

cp filename.txt /path/to/copyfile/$(date +"%FT%H%M")-newfilename.txt

日付+ "%Fにスペースがあるにもかかわらず、newfilename式の周りに引用符は必要ありません。実際にシェルが解析する方法のため、これらの引用符を含めると、crontab行に含まれているとコマンドは機能しなくなります。

答え3

for file in *.mp4;
do
    dt=$(date -r "$file" "+%Y%m%d-%H%M%S")
    mv "$file" "$dt - $file"
done

この Bash スクリプトは現在のフォルダのすべての mp4 ファイルをインポートし、元の名前の前にファイルの変更日時を追加します。

あなたのニーズに合わせてください。

関連情報