Exclui uma lista de diretórios do comando unix find [closed]

1

Eu preciso criar uma lista de arquivos presentes em um diretório, mas também passar um arquivo contendo uma lista de diretórios para excluir.

Eu vi a sugestão abaixo, mas não tive sorte com isso quando se trata do sinalizador de tipo:

find $dir_name $(printf "! -name %s " $(cat $exclude_file))

Existe uma maneira que eu posso fazer isso ou eu precisarei criar a lista inteira e então trabalhá-la removendo aquelas que coincidem parcialmente com as do diretório de exclusão.

    
por Matt Damon 10.04.2017 / 16:18

1 resposta

4

Considerando que exclude_file contém caminhos, não nomes, você precisa usar -path para corresponder às entradas. Para excluir subdiretórios de diretórios correspondentes, você também precisa -prune deles. Isso deve funcionar:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print

Se você quiser apenas ver arquivos, poderá imprimir apenas arquivos:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print
    
por 10.04.2017 / 16:27

Tags