Sempre excluir caminho no comando find

0

Eu tenho um diretório cujo conteúdo nunca deve ser encontrado por find, então eu encontrei algo assim:

alias find='find -not -path "*.sync*"'

a questão é que o find agora reclama que os operadores não são posicionais sempre que eu uso algo como find -depth . Existe outra maneira de fazer isso de forma limpa?

    
por Xerus 14.07.2018 / 14:53

1 resposta

0

Um operador chamado -not não existe em find . você quis dizer ! ? -path é uma extensão encontrada em muitas implementações de find , mas não em todos.

Seu principal problema pode ser que todos os argumentos de nome de caminho apareçam primeiro na linha de comando find e se você adicionar um argumento de tipo de nome de caminho além desse alias expandido, obterá find argumentos na ordem errada.

Uma solução geral para o seu problema não existe, pois você pode precisar adicionar mais argumentos find antes ou depois do caminho a ser excluído, dependendo da situação.

Você pode tentar:

find() {
    path=$1
    shift
    command find "$1̈́" ! -path '*.sync' "$@"
}

mas isso só permite um argumento de tipo de caminho.

    
por 14.07.2018 / 16:12