it-swarm.com.de

Dateien löschen, die dem Muster entsprechen

Ich muss rekursiv alle Dateien in allen Unterverzeichnissen entfernen, in denen der Dateiname mindestens zweimal eine Zahl gefolgt von einem 'x' gefolgt von einer Zahl enthält.

Beispiel:

Ich möchte diese Dateien entfernen:

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

Aber ich möchte diese Dateien NICHT entfernen:

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

Wie kann ich das machen (aus der Bash Shell)

33
mikkelbreum

Eine Zeichenfolge enthält "eine Zahl gefolgt von einem x gefolgt von einer Zahl" genau dann, wenn sie eine Ziffer gefolgt von einem x gefolgt von einer Ziffer enthält, dh wenn sie einen Teilstring enthält, der mit dem übereinstimmt Muster [0-9]x[0-9]. Sie möchten also die Dateien entfernen, deren Name dem Muster *[0-9]x[0-9]*[0-9]x[0-9]*.jpg Entspricht.

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

Wenn Ihr find kein -delete Hat, rufen Sie rm auf, um die Dateien zu löschen.

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +

Der richtige Befehl lautet:

find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'

dadurch werden nur Dateien mit den Namen "aaa-12x12.jpg", nicht jedoch "aaa-12x12red.jpg" erfasst.

0
MasterR