find: combinando -path e -prune para excluir arquivos e diretórios

4

Eu tenho um diretório /srv/tftp/pxelinux.cfg e um arquivo /etc/mtab . Desejo excluir ambos de find . Mas o que quer que eu faça, qualquer um sempre não é excluído

find /etc /srv -path /srv/tftp/pxelinux.cfg -prune -o \! -path /etc/mtab
find /etc /srv \( -path /srv/tftp/pxelinux.cfg -prune -o -print \) -a \( \! -path /etc/mtab \)

alguém poderia, por favor, aconselhar como fazer isso?

Nota: acho a sintaxe -path /foo -prune -o -print altamente confusa e não intuitiva

    
por Martin Vegter 25.10.2013 / 14:56

2 respostas

7

Experimente esta variante:

$ find /etc /srv \( -path /srv/tftp/pxelinux.cfg -o -path /etc/mtab \) \
    -prune -o -print

Isso "removerá" qualquer um desses argumentos de 2 -path da lista e imprimirá tudo o resto.

    
por 25.10.2013 / 15:18
0

Isso funciona para mim:

find . \! -path "./.git*" -a \! -name states_to_csv.pl

então converter para o seu deve ser algo como

find /etc /srv \! -path "./srv/tftp/pxelinux.cfg*" -a \! -name /etc/mtab

O sinalizador -a significa "e".

    
por 25.10.2013 / 15:18

Tags