Befehl zum Entfernen aller Dateien mit Ausnahme der neuesten Dateien, die sowohl für Solaris als auch für Linux geeignet sind

601
Ankit

Ich versuche einen Befehl, der alle Dateien von einem Ort mit Ausnahme des neuesten entfernt. Ich habe einen Arbeitsbefehl für Linux, aber es funktioniert nicht auf Solaris-Maschinen.

Mit dem folgenden Befehl werden alle Dateien mit Ausnahme der letzten 10 entfernt.

ls -l /*.tps | head -n -10 | rm -rf 
0

3 Antworten auf die Frage

0
xenoid
ls -t | tail -n +2 | xargs rm 

In Zeitlupe:

  • listet alle Dateien nach Zeit sortiert auf, neueste zuerst
  • Druck beginnend mit 2nd (also zuerst überspringen)
  • Namen übergeben an rm
danke @xenoid aber es wird nicht funktionieren. Ich habe einen Arbeitsbefehl, aber es funktioniert nicht an Solaris-Boxen. Solaris akzeptiert nicht zwei Argumente für den Kopf / Schwanz-Befehl. (Schwanz -n +2) Ankit vor 6 Jahren 0
@Ankit Hilft [this] (https://stackoverflow.com/questions/314321/whats-the-solaris-equivalent-to-the-bsds-tail-n100)? xenoid vor 6 Jahren 0
0
ben

Following the Oracle man pages and assuming you mean with 'the latest' 'the newest' files, I am suggesting the following approach:

ls -1tr | tail -n +11 | xargs rm for linux and

ls -1tr | /usr/xpg4/bin/tail -n +11 | xargs rm for oracle

0
Sasha Golikov

Um alle Dateien von einem Ort mit Ausnahme des neuesten zu entfernen, können Sie diesen plattformübergreifenden Befehl verwenden:

ls -1t /location | sed -n '2,$p' | xargs rm 

Das Sed-Programm 2,$pdruckt jede Zeile seit 2 bis zum Ende der Eingabe.