find não pode listar todos os arquivos

0

Estou tentando listar todos os arquivos em usr , cujos caminhos contêm a palavra-chave "x86_64-linux-gnu". Por exemplo, /usr/bin/x86_64-linux-gnu-gcc-ranlib-5 .

Primeiro, eu executo esse comando:

find /usr -name "*x86_64-linux-gnu*" | wc -l

A saída é 232. Eu posso sentir que isso não está correto.

Então eu executo outro comando:

find /usr -name "*" | grep x86_64-linux-gnu | wc -l

A saída é 3700, o que está correto.

Por que o primeiro comando não funciona como esperado?

    
por Yves 08.03.2018 / 09:31

2 respostas

4

Se você estiver procurando por todos os arquivos cujos caminhos contenham x86-64-linux-gnu , será necessário usar -path , não -name :

find /usr -path "*x86_64-linux-gnu*" | wc -l

-name corresponde apenas ao nome do arquivo base, enquanto -path corresponde ao caminho completo (conforme construído por find , portanto, iniciando com um dos caminhos iniciais fornecidos na linha de comandos). Olhando para a saída do seu primeiro comando irá ilustrar isto:

find /usr -name "*x86_64-linux-gnu*" | less

Você verá arquivos e diretórios correspondentes a x86_64-linux-gnu , como /usr/include/x86_64-linux-gnu , /usr/lib/ccache/x86_64-linux-gnu-g++ , /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so , mas não /usr/include/x86_64-linux-gnu/curl , que sua variante grep ou% variante% acima correspondem .

Essas duas expressões e seu uso apropriado são discutidos em detalhes na -path manpage (como sempre, veja primeiro find(1) em seu próprio sistema).

    
por 08.03.2018 / 09:35
2

De man find :

   -name pattern
          Base of file name (the path with the leading directories removed) matches
          shell pattern pattern.

O primeiro formato ( -name "*x86_64-linux-gnu*" ) corresponde apenas aos arquivos com o nome do arquivo correspondente a pattern . Se eles estiverem em um diretório cujo nome corresponda ao padrão, eles não serão correspondidos. No entanto, o último formato ( -name "*" with grep ) corresponde a estes.

    
por 08.03.2018 / 09:35

Tags