(5 odpovědí)
Uzavřeno před 4 lety.
Jak mohu v celém svém systému souborů Linux vyhledat všechny soubory python (soubory s příponou .py
)? Vím, že mohu find -name filename
ale jak to mohu udělat pro typ souboru?
Přijatá odpověď:
Ne všechny soubory pythonu budou mít příponu .py
– Zkuste spustit grep -rni python /usr/bin
například). Většina těchto skriptů bude mít řádek „shebang“ (nebo hashbang) (např. #!/usr/bin/env python
, #!/usr/bin/python2.7
). To informuje interpreta skriptu, který program je třeba použít k jeho spuštění, a můžete to vyhledat, abyste našli soubory python
Můžete však také použít mimetype souboru (obvykle v souladu s text/x-python
), abyste jej našli:
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
Kde /
je váš zamýšlený vyhledávací adresář.
Pomocí find
můžete také přidat -executable
možnost hledat pouze spustitelné soubory. Také použití -type f
omezit hledání tak, aby hledalo pouze soubory – můžete to změnit a poté zobrazit také symbolické odkazy atd. (některé skripty jsou obsaženy v /usr/lib
atd. a symbolicky odkazováno na /usr/bin/
atd.) . K dispozici je mnoho dalších možností, které můžete zobrazit spuštěním man find
.
file
by měl být schopen odhadnout typ souboru, i když soubor nemá žádnou příponu atd. (pomocí řádku shebang atd.) – viz zde.
Chcete-li odstranit jakékoli find: ‘/.../FILE’: Permission denied
atd., můžete skript spustit jako root (pomocí sudo bash -c "COMMAND"
, otevřením shellu pomocí sudo su
atd.) a/nebo jednoduše připojte 2>/dev/null
na příkaz find.