GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni mtime di un file specifico usando Bash?

stat può darti queste informazioni:

filemtime=$(stat -c %Y myfile.txt)

%Y ti dà l'ultima modifica come "secondi da The Epoch", ma ci sono molte altre opzioni; Ulteriori informazioni. Quindi, se il file è stato modificato il 22-01-2011 alle 15:30 GMT, quanto sopra restituirebbe un numero nell'ordine di 1295710237.

Modifica :Ah, vuoi il tempo in giorni da quando è stato modificato. Sarà più complicato, anche perché un "giorno" non è un periodo di tempo fisso (alcuni "giorni" hanno solo 23 ore, altri 25, grazie all'ora legale).

Gli ingenui la versione potrebbe essere simile a questa:

filemtime=$(stat -c %Y "$1")
currtime=$(date +%s)
diff=$(( (currtime - filemtime) / 86400 ))
echo $diff

...ma ancora una volta, presupponendo che un giorno sia sempre lungo esattamente 86.400 secondi.

Maggiori informazioni sull'aritmetica in bash qui.


AGE=$(perl -e 'print -M $ARGV[0]' $file)

imposterà $AGE all'età di $file in giorni, come -M di Perl operatore gestisce il stat chiamata e la conversione in giorni per te.

Il valore restituito è un valore a virgola mobile (ad esempio, 6,62849537 giorni). Aggiungi un int all'espressione se devi avere un risultato intero

AGE=$(perl -e 'print int -M $ARGV[0]' $file)

Anche Ruby e Python hanno le loro battute per dichiarare un file e restituire alcuni dati, ma credo che Perl abbia il modo più conciso.


L'utility data ha un comodo interruttore per estrarre l'mtime da un file, che puoi quindi visualizzare o archiviare utilizzando una stringa di formato.

date -r file "+%F"
# 2021-01-12
file_mtime=$(date -r file "+%F")

Vedi man date , l'output di date è controllato da una stringa di formato che inizia con "+"

Stringhe di formato utili per confrontare molte date potrebbero includere:

"+%j": day of year
"+%s": unix epoch time

L'aritmetica con le date è un po' una seccatura in bash, quindi se hai bisogno di un tempo relativo che funzioni in tutti i casi limite, potresti stare meglio con un'altra lingua.


Linux
  1. Utilizzo del comando Linux Basename negli script Bash

  2. Come ottenere un indirizzo di memoria specifico usando C

  3. Python FTP ottiene il file più recente per data

  4. Come ottenere la data/ora di creazione del file in Bash/Debian?

  5. Ottieni la data di ieri in bash su Linux, DST-safe

Come ottenere la data e l'ora correnti in Python

Come modificare automaticamente lo sfondo di GNOME a intervalli utilizzando BASH

Bash Beginner Series #5:Utilizzo di operatori aritmetici negli script Bash

Ottieni una riga specifica dal file di testo usando solo lo script della shell

Ottieni la data dell'ultima modifica del file in Linux

Ottieni il valore numerico chmod per un file