Ich verwende findzum 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" \) -prunescheint 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-putist ein Dienstprogramm, mit dem die Dateien nach Trashcanverschoben werden, anstatt sie zu löschen [1].