MWCodebymw.de ↗
Terminal

Viele Dateien auf einmal bearbeiten mit find und xargs

find sucht Dateien nach Namen, Alter oder Größe – und mit xargs schickst du die Treffer stapelweise an einen anderen Befehl. So löschst, verschiebst oder konvertierst du hunderte Dateien mit einer Zeile. Inklusive der wichtigsten Sicherheits-Regel.

find ist das Schweizer Taschenmesser für Dateien: Es sucht rekursiv nach Namen, Endung, Alter oder Größe. Kombiniert mit xargs machst du daraus eine Stapelverarbeitung.

Erst finden – und immer zuerst nur anschauen

find . -name "*.tmp"          # nur auflisten, was gefunden wird

Wichtigste Regel: Bevor du löschst oder umbaust, lass dir die Treffer erst anzeigen. So merkst du sofort, wenn find mehr erwischt als gedacht.

Dann handeln

find . -name "*.tmp" -delete                 # alle .tmp-Dateien löschen
find . -type f -mtime +30 -name "*.log"      # Logs, die älter als 30 Tage sind
  • -type f – nur Dateien (keine Ordner)
  • -mtime +30 – zuletzt geändert vor mehr als 30 Tagen
  • **-name "*.log"** – Namensmuster

An einen anderen Befehl übergeben: xargs

Wenn find selbst nicht kann, was du willst, reichst du die Treffer per xargs weiter:

# Alle PNGs mit ImageMagick verkleinern
find . -name "*.png" -print0 | xargs -0 -I{} mogrify -resize 1200x {}

Der Schlüssel steht in -print0 und xargs -0: Sie trennen die Dateinamen mit einem Null-Zeichen statt mit Leerzeichen. Ohne das gehen Dateinamen mit Leerzeichen kaputt – ein Klassiker, der schon viele Skripte zerlegt hat. Nutz die beiden immer zusammen.

Willst du auf Nummer sicher gehen, häng vorm scharfen Lauf ein echo davor: xargs -0 -I{} echo mogrify … zeigt dir jeden Befehl, ohne ihn auszuführen.

Solche Automatisierungen nehmen dir stumpfe Handarbeit ab. Noch mehr davon gibt's auf code.bymw.de.

#find#xargs#Terminal#Dateien#Batch

Du brauchst mehr als ein Snippet?

Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.

Projekt anfragen →