![Löschen Sie alle Dateien in einem Ordner mit einem Zeitstempel im Dateinamen](https://rvso.com/image/164724/L%C3%B6schen%20Sie%20alle%20Dateien%20in%20einem%20Ordner%20mit%20einem%20Zeitstempel%20im%20Dateinamen.png)
Ich muss alle Dateien in einem Ordner löschen, deren Dateinamen das fcrjlog-11-21-2019-1.txt
Format haben. Ich möchte alle Dateien mit diesem Dateinamen in einem Ordner löschen.
Antwort1
find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete
(Ersetzen Sie -delete
es durch -exec rm -f {} +
, wenn Ihr Unternehmen find
die nicht standardmäßige -delete
Erweiterung nicht unterstützt).
?
ist der Platzhalteroperator, der steht fürjedes einzelne Zeichen. Ersetzen Sie es durch , [[:digit:]]
damit nur Dezimalziffern übereinstimmen (0123456789).
! -type d
schließt die Dateien vom Typ ausVerzeichnis(die -delete
nicht entfernt werden konnten, es sei denn, sie waren sowieso leer), können Sie durch ersetzen, -type f
um noch restriktiver zu sein (nur einschließenregulärDateien mit Ausnahme aller anderen Dateitypen, einschließlich Symlink, Verzeichnis, Socket, FIFO, Gerät...). GNU find
unterstützt auch -xtype f
die Auswahl der Dateien, die alsregulärnach Symlink-Auflösung.
Ersetzen Sie es fcrjlog
durch für *
eine Übereinstimmung mit einer beliebigen Anzahl von Zeichen oder ?*
mit jeder nicht leeren Zeichenfolge oder [!.]*
mit jeder nicht leeren Zeichenfolge, deren erste Zeichenfolge nicht leer ist .
(um versteckte Dateien auszuschließen).
Antwort2
Es ist üblich, einige der Dinge anzuzeigen, die Sie bereits versucht haben – so erhalten Sie mehr Antworten. Für diese Frage müssen Sie reguläre Ausdrücke nachschlagen und einige der Konzepte verstehen. Ich nehme an, die „x“ in Ihren Zeitstempeln sind Zahlen? Wenn ja, hilft Ihnen dieser reguläre Ausdruck beim Einstieg:
/tmp>ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$"
test-12-12-1234-9.txt
/tmp>rm $(ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$")
Aufschlüsselung der verschiedenen Teile:
"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{4} -- Exactly four numeric characters
- -- A literal dash "-"
[0-9] -- One numeric character
. -- Any character. Use \. to insist on a dot
txt -- The literal string "txt"
$ -- An anchor that means the txt has to be at the end of the line
"