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

Älteste Datei finden und löschen, wenn mehr als X Dateien in einem Verzeichnis in Linux vorhanden sind

Ich habe viele Filme auf meiner Festplatte und habe sie je nach Filmgenre in verschiedenen Ordnern gespeichert. Jetzt möchte ich nur eine bestimmte Anzahl von Filmdateien in einem Verzeichnis behalten und alles andere löschen. Noch wichtiger ist, dass ich nur die ältesten Dateien löschen möchte. Auf diese Weise kann ich in jedem Ordner eine konstante Anzahl von Dateien verwalten. Da ich so viele Dateien in vielen Ordnern verstreut habe, ist es ziemlich zeitaufwändig, zu jedem Ordner zu gehen, nach den ältesten Dateien zu suchen und sie einzeln manuell zu löschen. Auf der Suche nach einer einfachen Möglichkeit, dies zu tun, fand ich die folgende Lösung. Weiter lesen. Es ist nicht so schwierig.

Älteste Datei in einem Verzeichnis unter Linux finden und löschen

Nehmen wir an, Sie wollten die älteste Datei finden und löschen, wenn mehr als 10 Dateien vorhanden sind in einem Verzeichnis. Wie würden Sie tun? Es ist ganz einfach.

Nehmen Sie das folgende Verzeichnis mit dem Namen ostechnix als Beispiel. Lassen Sie uns überprüfen, wie viele Dateien sich in diesem Verzeichnis befinden, indem Sie den Befehl verwenden:

$ find ostechnix/ -type f | wc -l

Oder cd in dieses Verzeichnis und starte:

$ ls | wc -l

Beispielausgabe:

33

Wie Sie im obigen Beispiel sehen, ist das Verzeichnis ostechnix enthält 33 Dateien. Ich möchte keine 33 Dateien in diesem Verzeichnis. Ich möchte alle ältesten Dateien löschen und nur 10 Dateien behalten.

Lassen Sie uns nun die älteste(n) Datei(en) in diesem Verzeichnis finden und löschen, wenn es mehr als 10 Dateien enthält. Wechseln Sie dazu in dieses Verzeichnis:

$ cd ostechnix

Und führen Sie den folgenden Befehl aus:

$ ls -1t | tail -n +11 | xargs rm

Oder,

$ ls -1t | tail -n +11 | xargs rm -f

Wo,

  • ls :Verzeichnisinhalte auflisten.
  • -1t :  1(Nummer eins ) gibt an, dass die Ausgabe von ls sollte eine Datei pro Zeile sein. t gibt an, Inhalte nach Änderungszeit zu sortieren, neueste zuerst.
  • tail :Den letzten Teil der Dateien ausgeben.
  • -n +11 :Ausgabe der letzten NUM Zeilen statt der letzten 10; oder verwenden Sie -n +NUM, um mit Zeile NUM beginnend auszugeben
  • xargs :Befehlszeilen aus der Standardeingabe erstellen und ausführen.
  • rm -f :Dateien oder Verzeichnisse entfernen. f gibt an, dass nicht vorhandene Dateien und Argumente ignoriert werden, niemals aufgefordert werden. Das bedeutet, dass dieser Befehl keine Fehlermeldungen anzeigt, wenn weniger als 10 Dateien vorhanden sind.
  • | - Es ist eine Pipeline. Es ist im Allgemeinen eine Folge von einem oder mehreren Befehlen, die durch einen der Steueroperatoren | getrennt sind oder |& .

Der obige Befehl löscht also die ältesten Dateien, wenn sich mehr als 10 Dateien im aktuellen Arbeitsverzeichnis befinden. Um zu überprüfen, wie viele Dateien sich nach dem Löschen der ältesten Datei(en) im Verzeichnis befinden, führen Sie einfach Folgendes aus:

$ ls | wc -l

Aktualisierung:

Wenn die Dateinamen Leerzeichen enthalten, funktioniert der obige Befehl nicht. Denn die xargs Der Befehl akzeptiert Leerzeichen (Tabs, Leerzeichen, neue Zeilen) als Trennzeichen. In diesem Fall können Sie es nur auf die Zeilenumbruchzeichen eingrenzen ('\n' ) mit -d Option wie unten:

$ ls -1t | tail -n +11 | xargs -d '\n' rm -f

Hoffe das hilft.

Empfohlene Lektüre: 

  • Wie man unter Linux Dateien findet und löscht, die älter als X Tage sind
  • Löschen Sie Dateien, auf die für eine bestimmte Zeit unter Linux nicht zugegriffen wurde

Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  3. So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

  4. Dateien oder Ordner finden und löschen, die älter als x Tage sind

  5. Wie löschen Sie Dateien, die älter als ein bestimmtes Datum in Linux sind?

So kopieren Sie Dateien und Verzeichnisse unter Linux

So zählen Sie Dateien im Verzeichnis in Linux

So finden und löschen Sie doppelte Dateien in Linux

Die 3 besten Tools zum Suchen und Löschen doppelter Dateien in Linux

So löschen Sie Dateien, die älter als die angegebenen Tage in Linux sind

Linux:Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen finden