Estou usando find
para localizar e excluir arquivos de backup, mas desejo excluir determinados diretórios da pesquisa. Os nomes de arquivos de backup poderia terminar em .bck
, bak
, ~
, ou backup
.
O código do Exemplo Mínimo de Trabalho (MWE) com apenas três diretórios a serem excluídos é:
#! /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
A sintaxe \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -prune
parece um pouco desajeitada, especialmente se houver cerca de dez diretórios a serem excluídos, embora eu tenha mostrado apenas três no MWE.
Existe uma maneira mais elegante de usar um arquivo de entrada, com a lista de diretórios excluídos ou uma construção semelhante a uma matriz ou lista, que possa ser pressionada para o serviço?
Lamento não ter sido mais explícito quando escrevi minha pergunta original.
Nota: trash-put
é um utilitário que move os arquivos para, em Trashcan
vez de excluí-los [1].