Löschen Sie alle Dateien in einem Ordner mit einem Zeitstempel im Dateinamen

Löschen Sie alle Dateien in einem Ordner mit einem Zeitstempel im Dateinamen

Ich muss alle Dateien in einem Ordner löschen, deren Dateinamen das fcrjlog-11-21-2019-1.txtFormat haben. Ich möchte alle Dateien mit diesem Dateinamen in einem Ordner löschen.

Antwort1

 find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete

(Ersetzen Sie -deletees durch -exec rm -f {} +, wenn Ihr Unternehmen finddie nicht standardmäßige -deleteErweiterung nicht unterstützt).

?ist der Platzhalteroperator, der steht fürjedes einzelne Zeichen. Ersetzen Sie es durch , [[:digit:]]damit nur Dezimalziffern übereinstimmen (0123456789).

! -type dschließt die Dateien vom Typ ausVerzeichnis(die -deletenicht entfernt werden konnten, es sei denn, sie waren sowieso leer), können Sie durch ersetzen, -type fum noch restriktiver zu sein (nur einschließenregulärDateien mit Ausnahme aller anderen Dateitypen, einschließlich Symlink, Verzeichnis, Socket, FIFO, Gerät...). GNU findunterstützt auch -xtype fdie Auswahl der Dateien, die alsregulärnach Symlink-Auflösung.

Ersetzen Sie es fcrjlogdurch 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
"

verwandte Informationen