![Behalten Sie nur die letzten beiden Ordner im Verzeichnis](https://rvso.com/image/1415072/Behalten%20Sie%20nur%20die%20letzten%20beiden%20Ordner%20im%20Verzeichnis.png)
Ich habe ein Verzeichnis mit den folgenden Ordnern.
Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210
Ich möchte nur die letzten beiden Ordner behalten und den Rest löschen. Der Ordner hat dieses Format: Data-YYYY-MM-DD-HHMM
.
Gibt es einen Weg, mit dem ich die Ordnernamen vergleichen und den neuesten behalten und den Rest löschen kann? Ich kann dies später in meinem Shell-Skript berücksichtigen.
Antwort1
Ich gehe davon aus, dass der Name der Verzeichnisse gleichzeitig der Zeitstempel ihrer Erstellung ist. Wenn das so ist, können Sie verwendenlsum Dateien entsprechend der Änderungszeit der Verzeichnisse aufzulisten.
Dadurch werden die Verzeichnisse in der Reihenfolge der neuesten zuerst aufgelistet
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt
So löschen Sie alle Verzeichnisse außer den neuesten beiden Dateien: -
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r
Notiz:Probieren Sie es zunächst in einer Testumgebung aus und prüfen Sie sorgfältig, ob es genau das ist, was Sie ausführen möchten, und ob das Skript auch mit Ihrem Verzeichnissatz funktioniert.