
Ich habe eine Reihe von Dateien, die immer mit mindestens 5 numerischen Werten beginnen, wie:
85966_88.jpg
Mit dieser Antwort habe ich gelerntSo verwenden Sie Find und Regextype in einem Befehl zum Löschen von Dateien wie folgt:
find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;
Ich habe diesen Befehl meinen Anforderungen entsprechend wie folgt geändert:
find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;
Ich führe den Befehl aus und er löscht die Dateien nicht. Ich kann nicht herausfinden, wie ich alle .jpg-Dateien entfernen kann, die numerische Werte in den ersten 5 Ziffern haben und dann _
Antwort1
Erstens der Befehlwie geschriebenlöscht nichts: wie in der von Ihnen verlinkten Antwort erwähnt
Testen Sie dies mit dem
echo
Befehl und verwenden Sie stattdessen, wenn Sie sicher sind, dass die richtigen Dateien aufgelistet werdenrm
.
Zweitens ist es für Ihren Fall zu kompliziert, da Sie die Entfernung nicht auf einen Bereich oder eine Teilmenge der Übereinstimmungen beschränken möchten (Sie benötigen also nicht den Shell-Test). Sie könnten einfach Folgendes tun:
find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print
(zum Testen) und ersetzen Sie -print
es -delete
, wenn Sie zufrieden sind, dass es richtig funktioniert.
Allerdings scheinen sogar reguläre Ausdrücke zu kompliziert – ein einfacher Glob-Match erfordert tatsächlich weniger Tipparbeit:
find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print
(ersetzen Sie es erneut -print
durch „ , -delete
wenn Sie sicher sind“).
Wenn Sie nicht rekursiv suchen müssen, sollte ein einfacher Shell-Glob funktionieren:
rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg