Você pode usar -path
, não é POSIX, mas suportado por muitas implementações:
find . \! -path "*/.svn/*" -empty -delete
-regex
também é uma opção.
Este comando não é compatível com DWIM:
find . \( -name .svn -prune -false \) -o \( -empty -delete \)
find: The -delete action atomatically turns on -depth, but -prune
does nothing when -depth is in effect. If you want to
carry on anyway, just explicitly use the -depth option.
A adição de -depth
desativa o efeito de -prune
, o que significa que .svn
diretórios também são excluídos. Então: Qual sintaxe find
(se houver) pode ser usada para remover e excluir alguns dos caminhos não limpos, sem usar outras ferramentas como rm
?
Se o espaço em branco não for um problema, algo assim funcionará
find . \( -name .svn -prune -false \) -o -print | tac | xargs -L rm -f
A vantagem dessa abordagem é que é um grande ganho de desempenho quando as partes da árvore que estamos evitando com -prune
são grandes. A desvantagem é que -delete irá deletar as coisas assim que vir uma folha, mas este comando tem que esperar até que find
saia. Então, se há muitas coisas para deletar, mas não muito do espaço de busca foi podado, pode não ser uma vitória.
Tags find