(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.