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