Exclui alguns dos resultados do "find"

1

Estou usando o comando find junto com o argumento -exec something . Posso excluir alguns diretórios / nomes que correspondem a regex (algo como --exclude do rsync)? -prune será suficiente se eu quiser excluir muitas coisas?

    
por vfg 15.08.2012 / 09:39

2 respostas

1

Você pode excluir certos diretórios enquanto usa o comando find no Ubuntu.

Você pode usar o comando find da seguinte maneira para encontrar todos os diretórios, exceto o diretório tmp:

find /path/to/dest -type d \( ! -name tmp \) -print

Encontre todos os diretórios, exceto tmp e cache:

find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache \) -print

A opção -prune garante que você não desça ao diretório:

find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache -prune \) -print

Você pode encontrar todos os arquivos * .pl encontrados, exceto no diretório tmp e raiz, digite:

find /  \( ! -name tmp \) -o \( ! -name root -prune \)  -name "*.pl" -print

Extraído de:

link

    
por Sparky 15.08.2012 / 10:43
1

Para uma solução de trabalho (testada no Ubuntu 12.04).

find ! -path "*dir1*" -iname "*.mp3"

pesquisará arquivos mp3 na pasta atual e nas subpastas, exceto na subpasta dir1.

find ! -path "*dir1*" ! -path "*dir2*" -iname "*.mp3"

para excluir dir1 e dir2.

    
por user223669 09.12.2013 / 11:11