Linux - Speichern Sie nur die letzten 10 Ordner und löschen Sie den Rest

7

Ich habe einen Ordner, der Versionen meiner Anwendung enthält, jedes Mal, wenn ich eine neue Version hochlade, wird ein neuer Unterordner dafür erstellt, der Name des Unterordners ist der aktuelle Zeitstempel, hier ist ein Ausdruck des Hauptordners (ls -l | grep ^ d):

%Vor%

Ich suche nach einem Befehl, der die letzten 10 Versionen (Unterordner) belässt und den Rest löscht.

Irgendwelche Gedanken?

    
Ran 16.05.2011, 22:17
quelle

6 Antworten

23

Da gehst du hin. (bearbeitet)

ls -dt */ | tail -n +11 | xargs rm -rf

Erst Liste Verzeichnisse, die vor kurzem geändert wurden, nehmen dann alle außer die ersten 10 und senden sie dann an rm -rf .

    
Ahmet Alp Balkan 16.05.2011, 22:23
quelle
2
%Vor%

Dies setzt voraus, dass dies die einzigen Verzeichnisse sind und keine anderen im Arbeitsverzeichnis vorhanden sind.

  • ls -dt1 wird normalerweise nur das neueste Verzeichnis drucken, jedoch /*/ nur Verzeichnisse übereinstimmen und ihre vollständigen Pfade drucken die 1 gewährleistet eins line pro match / listing t sortiert die Zeit mit dem neuesten an der Spitze.

  • sed nimmt die elfte Zeile nach unten und druckt nur die Zeilen, die dann an rm übergeben werden.

Sie können xargs verwenden, aber zu Testzwecken möchten Sie vielleicht | rm -r entfernen, um zu sehen, ob die Verzeichnisse zuerst richtig aufgelistet sind.

    
Thme 12.11.2012 15:50
quelle
1
%Vor%

Erläuterung:

  • listet alle Inhalte des aktuellen Verzeichnisses in chronologischer Reihenfolge auf (zuerst die neuesten Dateien)
  • filtere alle Verzeichnisse heraus
  • Ignoriere die 10 ersten Zeilen / Verzeichnisse
  • Verwenden Sie awk, um die Dateinamen aus der verbleibenden 'ls -l' Ausgabe zu extrahieren

  • Entfernen Sie die Dateien

Tilo 16.05.2011 23:29
quelle
1

Wenn die Namen der Verzeichnisse das Datum enthalten, kann man alle bis auf die letzten 10 Verzeichnisse mit der alphabetischen Sortierung löschen

%Vor%     
arx-e 16.01.2015 13:22
quelle
0

BEARBEITEN:

%Vor%     
linuts 16.05.2011 22:21
quelle
-2

Ihre Verzeichnisnamen sind in chronologischer Reihenfolge sortiert, was dies vereinfacht. Die Liste der Verzeichnisse in chronologischer Reihenfolge ist nur * oder [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] , um genauer zu sein. Sie möchten also alle bis auf die letzten 10 löschen.

%Vor%

(Während mehr als 10 Verzeichnisse übrig sind, löschen Sie das älteste.)

    
Gilles 16.05.2011 22:27
quelle

Tags und Links