(5 risposte)
Chiuso 4 anni fa.
Come posso cercare nel mio intero filesystem Linux tutti i file Python (file con estensione .py )? So che posso fare find -name filename ma come posso farlo per il tipo di file?
Risposta accettata:
Non tutti i file Python avranno l'estensione del file .py – Prova a eseguire grep -rni python /usr/bin Per esempio). La maggior parte di questi script avrà una riga "shebang" (o hashbang) (ad es. #!/usr/bin/env python , #!/usr/bin/python2.7 ). Questo informa l'interprete dello script quale programma deve essere utilizzato per eseguirlo e puoi cercarlo per trovare file python
Tuttavia, puoi anche utilizzare il tipo mime del file (di solito sulla falsariga di text/x-python ) per trovarlo:
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
Dove / è la directory di ricerca prevista.
Con find potresti anche aggiungere l'-executable opzione per cercare solo file eseguibili. Anche l'uso di -type f limita la ricerca per cercare solo i file:puoi cambiarlo e quindi mostrare anche i collegamenti simbolici, ecc. (alcuni script sono contenuti in /usr/lib ecc e con un collegamento simbolico a /usr/bin/ ecc) . Sono disponibili molte altre opzioni, puoi vederle eseguendo man find .
file dovrebbe essere in grado di indovinare il tipo di file anche se il file non ha estensione ecc. (usando la riga shebang ecc.) – vedi qui.
Per rimuovere qualsiasi find: ‘/.../FILE’: Permission denied ecc, puoi eseguire lo script come root (usando sudo bash -c "COMMAND" , aprendo una shell con sudo su ecc), e/o semplicemente aggiungere 2>/dev/null al comando trova.