Estoy utilizando findpara localizar y eliminar archivos de copia de seguridad, pero deseo excluir ciertos directorios de la búsqueda. Los nombres de los archivos de copia de seguridad podrían terminar en .bck, bak, ~, o backup.
El código de Ejemplo de trabajo mínimo (MWE) con solo tres directorios para excluir es:
#! /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
La sintaxis \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -pruneparece un poco torpe, especialmente si hay alrededor de diez directorios para excluir, aunque solo he mostrado tres en el MWE.
¿Hay alguna forma más elegante de usar un archivo de entrada, con la lista de directorios excluidos, o una construcción tipo matriz o de lista, que podría ser puesta en servicio?
Lamento no haber sido más explícito cuando escribí mi pregunta original.
NB: trash-putes una utilidad que mueve los archivos al en Trashcanlugar de eliminarlos [1].