Estoy utilizando find
para 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" \) -prune
parece 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-put
es una utilidad que mueve los archivos al en Trashcan
lugar de eliminarlos [1].