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)
-delete
noch-exec rm
für mich in Bash unter Windows gearbeitet. Aber das tat:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
undxargs -0
, andernfalls schlägt der Befehl mit Dateinamen fehl, die Leerzeichen oder einfache Anführungszeichen enthalten. Aber-delete
und-exec rm
tut Arbeit unter Windows. Wenn etwas nicht funktioniert, liegt es nicht an ihrer Verwendung.find
sicher, dass Windows über ein nicht verwandtes Programm verfügt , stellen Sie also sicher, dass die Unix-Dienstprogramme an erster Stelle stehenPATH
.Der richtige Befehl lautet:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
Dies wird nur Dateien mit Namen erfassen: 'aaa-12x12.jpg', aber nicht 'aaa-12x12red.jpg'
quelle