J'utilise find
pour localiser et supprimer des fichiers de sauvegarde, mais je souhaite exclure certains répertoires de la recherche. Les noms de fichiers de sauvegarde pourrait se terminer dans .bck
, bak
, ~
ou backup
.
Le code exemple de travail minimal (MWE) avec seulement trois répertoires à exclure est:
#! /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 syntaxe \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -prune
semble un peu maladroite, surtout s'il y a une dizaine de répertoires à exclure, même si je n'en ai montré que trois dans le MWE.
Existe-t-il une manière plus élégante d'utiliser soit un fichier d'entrée, avec la liste des répertoires exclus, soit une construction de type tableau ou liste, qui pourrait être mise en service?
Je suis désolé de ne pas avoir été plus explicite lorsque j'ai écrit ma question d'origine.
NB: trash-put
est un utilitaire qui déplace les fichiers vers au Trashcan
lieu de les supprimer [1].