Wie Kos betonte, ist es möglicherweise nicht möglich, die älteste Datei (nach Erstellungsdatum) zu kennen.
Wenn die Änderungszeit gut für Sie ist und der Dateiname keine neue Zeile hat:
rm "$(ls -t | tail -1)"
Es sieht so aus, als ob Sie damit einverstanden sind, die älteste geänderte Datei anstelle der ältesten erstellten Datei zu löschen;
Ich halte dies für die sicherste Methode, da sie bei Dateinamen mit Zeilenumbrüchen nicht abbricht:
stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
stat --printf='%Y %n\0' *
:gibt eine NUL-getrennte Liste der Zeit der letzten Änderung aus, gefolgt vom Dateipfad für jede Datei im aktuellen Arbeitsverzeichnis;sort -z
:sortiert die Liste mit NUL als Zeilentrenner;sed -zn '1s/[^ ]\{1,\} //p'
:entfernt das erste Vorkommen einer Zeichenfolge, die ein oder mehrere Zeichen enthält, kein Leerzeichen, gefolgt von einem Leerzeichen, aus der ersten NUL-terminierten Zeile und gibt es aus;xargs -0 rm
:übergibt die NUL-terminierte Zeile anrm
als Argument;
% touch file1
% touch file2
% stat -c '%Y %n' *
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
% ls
file2