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

Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner

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 an rm 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

Linux
  1. Warum erkennt das Bash-Skript keine Aliase?

  2. Wie entferne ich die Bom aus einer UTF-8-Datei?

  3. Unfähig, den richtigen Exit-Code aus einem Skript zu erhalten?

  4. Woher weiß ich den Namen der Skriptdatei in einem Bash-Skript?

  5. In Bash-Skript zur/von der Zwischenablage leiten

35 Bash-Skriptbeispiele

Verzeichnis in Linux entfernen – So löschen Sie einen Ordner von der Befehlszeile aus

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

Führen Sie das Bash-Skript von der URL aus

Öffnen Sie Vim aus einem Bash-Shell-Skript heraus

atomare Erstellungsdatei, falls nicht aus dem Bash-Skript vorhanden