Eu construí o seguinte comando find:
find ./ \( -path "*work*" -o -path "*ncvlog_lib*" \) -prune -o -type f -not
-name "*.wlf" -not -name "*.vcd" -not -name "*.sim" -not -name "*vcs*"
O comando é invocado em uma única linha. Eu quebrei a linha aqui para facilitar a leitura.
O único problema é que ele imprime os nomes dos diretórios removidos, apesar de fornecer o argumento -type f. Exemplo de saída:
./cdl2verilog_files/test_synth/work
./cdl2verilog_files/test_synth/some_file1.txt
./cdl2verilog_files/test_synth/something_else.txt
./cdl2verilog_files/test_synth/another_file.v
work
é um diretório. Seu conteúdo não está incluído na saída, portanto, a remoção funciona conforme necessário. No entanto, o próprio diretório é impresso. Não consigo encontrar uma solução para isso. Alguma ideia?
A propósito, estou usando o tcsh.
-prune
exclui o conteúdo do diretório, mas não o próprio diretório. Isso acontece se-prune
for a única ação em umfind
comando. Se houvesse qualquer outra ação (por exemplo ,-exec
ou-print
), ela não produziria os nomes de diretório removidos. Então você só precisa adicionar um explícito-print
no final do seufind
comando. Por exemplo:Aliás, você pode encurtar/simplificar seu
find
comando usando um único-regex
predicado em vez de vários-name
predicados. por exemploIsso produz uma saída idêntica à da primeira versão acima.
acho que no seu caso
é ambíguo :
-o
significa "ou", quandofind
encontra um diretório, o-prune
é verdadeiro, portanto-type f
não é avaliado