GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das Alter der ältesten Datei in einer Zeile finden oder Null zurückgeben?

Ich möchte das Alter der ältesten Datei in einem bestimmten Verzeichnis finden oder 0 zurückgeben, wenn sich in diesem Verzeichnis keine Dateien befinden. Ich brauche auch einen einzeiligen Befehl, der es tut. Bisher ist dies mein Befehl, um das Alter der ältesten Datei im Verzeichnis in Sekunden zu ermitteln:

expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))

Das Problem ist, dass, wenn keine Dateien vorhanden sind, der folgende Fehler zurückgegeben wird:

$ expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
stat: cannot stat ‘0’: No such file or directory
-bash: 1554373460 - : syntax error: operand expected (error token is "- ")

In diesem Fall möchte ich also, dass der Befehl nur 0 zurückgibt und den Fehlerausdruck unterdrückt.

Akzeptierte Antwort:

Wenn es eine Zeile sein muss:

stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'
  • stat -c %Y ./* 2>/dev/null gibt den Zeitstempel aller Dateien aus und ignoriert Fehler (also keine Dateien führen zu keiner Ausgabe)
  • Mit awk:

    • -v d="$(date +%s)" Speichern Sie den aktuellen Zeitstempel in einer Variablen d
    • BEGIN {m=d} m initialisieren zu d
    • $0 < m {m = $0} Verfolgen des Minimums in m
    • END {print d - m} Differenz drucken.

Linux
  1. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner?

  2. Wie erhält man die Md5-Summe des Inhalts eines Verzeichnisses als eine Summe?

  3. Kann die zu patchende Datei in Eingabezeile 3 nicht finden?

  4. N häufigste Wörter in einer Datei mit einer Stoppwortliste von der Befehlszeile aus finden?

  5. Dateiinhalt kodieren und als eine Zeile wiedergeben?

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So finden Sie die längste(n) Zeile(n) in einer Datei in Linux

Finden Sie die Befehlszeile?

Wie finde ich den my.cnf-Speicherort von MySQL?

Konvertieren Sie Unix-Zeilenenden in Windows

Wie finde ich den Standard-Dateimanager?