Alle Dateien löschen, deren Dateinamen eine bestimmte Zeichenfolge enthalten?


22

Ich habe mein WordPress-Theme geändert. Der ältere hat so viele Bilder auf dem Server erstellt. Mein neues Thema benötigt sie nicht, deshalb möchte ich alle entfernen. Wie kann ich das machen?

Zum Beispiel:
Standardbild:12_angry_men_lone_holdout.jpg

Ich möchte löschen:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

Unter Verwendung von Digitalocean, Ubuntu 13.10.


Klicken Sie auf einen Terminaltyp man rm, um die Handbuchseite des Befehls rm anzuzeigen.
Hmayag


Bei diesen Bildern handelt es sich anscheinend um die automatisch erstellten Miniaturansichten von Bildern, die in Ihre WorldPress-Medienbibliothek hochgeladen wurden. Wenn ja, löschen Sie diese Dateien nicht im Terminal auf dem Server. Öffnen Sie Ihre WordPress-Admin-Seite, öffnen Sie "Einstellungen"> "Medien". Stellen Sie dort die gewünschten Miniaturbildgrößen ein. Installieren Sie dann das Plugin Thumbnails neu generieren und erstellen Sie alle Thumbnails neu (dies kann einige Minuten dauern, abhängig von der Anzahl der Bilder in Ihrer Medienbibliothek).
Bob

Antworten:


22

Befinden sie sich im selben Ordner, verwenden Sie den Platzhalter *, um dies zu erreichen:

rm *text*

Wo textist die Zeichenfolge, die der Dateiname enthält?


Eigentlich ist es nicht ein Verzeichnis, aber ich kann das bis jetzt nacheinander tun. Vielen Dank!
Ibrahim Mumcu

27

Verwenden Sie finddiese Option, um Dateien rekursiv zu suchen und zu löschen, deren Namen "text" enthalten:

find -type f -name '*text*' -delete

Sie können auch vorher ausführen find -type f -name '*text*'(ohne -delete), um sicherzustellen, dass keine Dateien gelöscht werden, die Sie nicht löschen möchten .


Tatsächlich können Sie Platzhalter an einer beliebigen Stelle in der Suchzeichenfolge platzieren, -name '12_angry_men_lone_holdout-*.jpg'was in Ihrem Fall möglicherweise besser geeignet ist.


Ist das keine Notwendigkeit, Dateipfad darstellen
Avinash Raj

@AvinashRaj Wenn der erste Parameter kein Pfad ist, wird finddas aktuelle Arbeitsverzeichnis durchsucht.
6.

Jemand legte. kurz nach find für die Suche im aktuellen Arbeitsverzeichnis.
Avinash Raj

1
@AvinashRaj Das wäre überflüssig. Stand man find: Wenn keine Pfade angegeben sind, wird das aktuelle Verzeichnis verwendet.
6.

@AvinashRaj Schaltet die aus POSIX - Spezifikation für findtatsächlich nicht einen Weg benötigen. Standardmäßig .ist dies eine von GNU find hinzugefügte Modifikation. Wenn dies Unix & Linux wäre , würde ich das zu meiner Antwort hinzufügen, aber da Ubuntu standardmäßig mit GNU find geliefert wird, möchte ich Neulinge nicht mehr als nötig verwirren. ;)
15.

1

Versuche dies:

rm -rf 12_angry_men_lone_holdout-*

Dies wird keep 12_angry_men_lone_holdout.jpgund entfernen Sie Dateien mit Abmessungen (290x166)

Und bitte denk daran

rm -rf 12_angry_men_lone_holdout.*

löscht auch die von Ihnen benötigte Standarddatei.


0
find . -type f -name '*[0-9]x[0-9]*' -delete

Führen Sie dies im übergeordneten Verzeichnis aus. Dadurch werden alle Dateien gelöscht, deren Name aus einer Ziffer gefolgt von einem 'x' und einer weiteren Ziffer besteht.

Seien Sie trotzdem vorsichtig, dies könnte auch die Originaldateien löschen, wenn ihr Name das obige Muster enthält (unwahrscheinlich). Führen Sie es zuerst ohne '-delete' aus, um festzustellen, ob Dateien mit einem solchen Namen vorhanden sind. In diesem Fall müssen Sie nur ein restriktiveres Muster finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.