find kann alle 3 Zeitstempel drucken, die eine Datei / ein Verzeichnis haben kann. Sie müssen -printf nur mit der entsprechenden Formatsequenz verwenden: % C @ oder % A @ oder % T @ (siehe Detail ist Man find ).
Wie für leere Verzeichnisse prüfen, ob $? is 0 kann irreführend sein, weil 0-Rückkehrcode bedeutet, dass "nichts Schlimmes passiert ist", und ein leeres Verzeichnis nicht "etwas Schlechtes" zählt, es ist nur ein spezieller, aber normaler Fall. Sie können aber den OUTPUT von find (und die folgenden Befehle in der Pipe) speichern und prüfen, ob er leer ist oder nicht.
Mögen
fileage=$(find $1 -maxdepth 1 -type f -printf "%T@\n" | sort | head -n 1) if [ -z "fileage" ]; then echo 0 else echo $fileage fi
oder, wenn Sie kurz sein möchten:
fileage=$(find $1 -maxdepth 1 -type f -printf "%T@\n" | sort | head -n 1) echo $
Seien Sie jedoch vorsichtig, wenn Sie wirklich "älteste Datei" sehen möchten, da dies das Lesen der Erstellungszeit der Datei bedeuten würde und nicht gespeichert wird. Sie könnten die älteste Datei mit der neuesten aller drei Zeitstempel haben.