Encontre todos os arquivos python no sistema de arquivos linux [duplicado]

5

Como posso pesquisar todo o meu sistema de arquivos Linux para todos os arquivos python (arquivos com extensão .py )? Eu sei que posso fazer find -name filename , mas como posso fazer isso para o tipo de arquivo?

    
por unconditionalcoder 10.06.2016 / 02:48

3 respostas

3

Nem todos os arquivos python terão a extensão de arquivo .py - Tente executar grep -rni python /usr/bin , por exemplo). A maioria desses scripts terá uma linha 'shebang' (ou hashbang) (por exemplo, #!/usr/bin/env python , #!/usr/bin/python2.7 ). Isso informa o interpretador do script que programa precisa ser usado para executá-lo, e você pode procurar por isso para encontrar arquivos python

No entanto, você também pode usar o tipo MIME do arquivo (geralmente ao longo das linhas de text/x-python ) para encontrá-lo:

find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done

Onde / é o seu diretório de pesquisa pretendido.

Com find você também pode adicionar a opção -executable para procurar apenas arquivos executáveis. Também o uso de -type f restrict procura procurar apenas por arquivos - você pode mudar isso e então mostrar links simbólicos etc também (alguns scripts estão contidos em /usr/lib etc e linkados por símile para /usr/bin/ etc) . Muitas outras opções estão disponíveis, você pode vê-las executando man find .

file deve ser capaz de adivinhar o tipo de arquivo mesmo se o arquivo não tiver extensão, etc. (usando a linha shebang, etc) - consulte aqui .

Para remover quaisquer erros de find: ‘/.../FILE’: Permission denied etc, você pode executar o script como raiz (usando sudo bash -c "COMMAND" , abrindo um shell com sudo su etc) e / ou simplesmente acrescentar 2>/dev/null ao comando find.

    
por Wilf 10.06.2016 / 05:05
1

-name '*.py' desde que -name aceita um padrão.

Cuidado com as citações simples.

    
por waltinator 10.06.2016 / 03:27
1

sudo find / -name "*.py"

Você precisa apenas de sudo para evitar Permission denied s (já que você está pesquisando a partir da raiz).

    
por Jedi 10.06.2016 / 03:28