risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come si inseriscono la data e l'ora nel nome di un file?

Sto cercando di eseguire un comando e vorrei inserire la data e l'ora nel nome del file di output.

Ecco un comando di esempio che vorrei eseguire.

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

Il formato dell'ora della data può essere sensato con i caratteri di sottolineatura. Anche UTC se AM e PM non possono essere usati.

24
visc

Se si desidera utilizzare il datetime corrente come nome file, è possibile utilizzare date e sostituzione comando .

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

Ciò risulta nel file 2016_04_25_10_30_AM.log (sebbene, con il datetime corrente) creato con l'hash md5 di /etc/mtab come contenuto.

Si noti che i nomi di file contenenti i timestamp in formato 12 ore probabilmente non ordineranno per nome nel modo in cui si desidera che vengano ordinati. È possibile evitare questo problema utilizzando invece i timestamp in formato 24 ore.

Se non hai l'obbligo di utilizzare quel formato data specifico, potresti prendere in considerazione l'utilizzo di un formato data/ora conforme a ISO 8601. Alcuni esempi di come generare rappresentazioni datetime ISO 8601 valide includono:

 $ 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

Se desideri nomi di file "più sicuri" (ad esempio, per compatibilità con Windows), puoi omettere i due punti dalla porzione temporale.

Tieni presente che tutti gli esempi sopra riportati presuppongono che l'ora del sistema locale. Se è necessaria una rappresentazione dell'ora coerente tra i fusi orari, è necessario specificare un offset del fuso orario o UTC. Puoi ottenere un offset di fuso orario conforme a ISO 8601 usando "% z" nella parte del formato della tua chiamata date in questo modo:

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

Puoi ottenere l'ora UTC nella tua chiamata date specificando -u flag e l'aggiunta di "Z" alla fine della stringa datetime per indicare che l'ora è UTC in questo modo:

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