(5 Antworten)
Vor 4 Jahren geschlossen.
Wie kann ich mein gesamtes Linux-Dateisystem nach allen Python-Dateien durchsuchen (Dateien mit der Erweiterung .py )? Ich weiß, dass ich find -name filename kann aber wie kann ich das für den Dateityp machen?
Akzeptierte Antwort:
Nicht alle Python-Dateien haben die Dateierweiterung .py – Versuchen Sie, grep -rni python /usr/bin auszuführen zum Beispiel). Die meisten dieser Skripte haben eine „shebang“- (oder hashbang-) Zeile (z. B. #!/usr/bin/env python). , #!/usr/bin/python2.7 ). Dies informiert den Interpreter des Skripts, welches Programm verwendet werden muss, um es auszuführen, und Sie können danach suchen, um Python-Dateien zu finden
Sie können jedoch auch den Mimetyp der Datei verwenden (normalerweise in Anlehnung an text/x-python ), um es zu finden:
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
Wobei / ist Ihr vorgesehenes Suchverzeichnis.
Mit find Sie könnten auch die -executable hinzufügen Option, nur nach ausführbaren Dateien zu suchen. Auch die Verwendung von -type f beschränken Sie die Suche darauf, nur nach Dateien zu suchen – Sie könnten dies ändern und dann auch symbolische Links usw. anzeigen (einige Skripte sind in /usr/lib enthalten etc und mit /usr/bin/ symbolisiert usw.) . Viele weitere Optionen sind verfügbar, Sie können diese sehen, indem Sie man find ausführen .
file sollte in der Lage sein, den Dateityp zu erraten, auch wenn die Datei keine Erweiterung usw. hat (unter Verwendung der Shebang-Zeile usw.) – siehe hier.
Zum Entfernen von find: ‘/.../FILE’: Permission denied etc, können Sie das Skript als root ausführen (mit sudo bash -c "COMMAND" , Öffnen einer Shell mit sudo su usw.) und/oder einfach 2>/dev/null anhängen zum Suchbefehl.