Ich verwende find
zum Suchen und Löschen von Sicherungsdateien, möchte jedoch bestimmte Verzeichnisse von der Suche ausschließen. Die Backup - Dateinamen enden in könnten .bck
, bak
, ~
, oder backup
.
Der MWE-Code (Minimal Working Example) mit nur drei auszuschließenden Verzeichnissen lautet:
#! /bin/bash
find . -type d \( -path "./.*" -o -path "./Music" -o -path "./Documents" \) -prune -o -type f \( -name "*.bck" -o -name "*.bak" -o -name "*~" -o -name "*.backup" \) -print0 | xargs -0 --no-run-if-empty trash-put
Die Syntax \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -prune
scheint etwas klobig zu sein, besonders wenn etwa zehn Verzeichnisse ausgeschlossen werden müssen, obwohl ich in der MWE nur drei gezeigt habe.
Gibt es eine elegantere Möglichkeit, entweder eine Eingabedatei mit der Liste der ausgeschlossenen Verzeichnisse oder ein Array- oder Listen-ähnliches Konstrukt zu verwenden, das in Betrieb genommen werden könnte?
Es tut mir leid, dass ich nicht expliziter war, als ich meine ursprüngliche Frage schrieb.
NB: trash-put
ist ein Dienstprogramm, mit dem die Dateien nach Trashcan
verschoben werden, anstatt sie zu löschen [1].