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