Das folgende Skript durchsucht (Text-) Dateien in einem bestimmten Verzeichnis rekursiv nach Vorkommen einer bestimmten Zeichenfolge, unabhängig davon, ob diese in Groß- oder Kleinbuchstaben oder in einer Kombination davon vorliegt.
Sie erhalten eine Liste der gefundenen Übereinstimmungen, die Pfade zu den Dateien, kombiniert mit dem Dateinamen und den tatsächlichen Vorkommen der Zeichenfolge in der Datei.
/path/to/file1 ['numlock', 'numlocK']
/longer/path/to/file2 ['NuMlOck']
usw.
Um die Suchzeit zu begrenzen, würde ich in bestimmten Verzeichnissen nach Übereinstimmungen suchen, also nicht nach 2 TB Dateien;).
Um es zu benutzen:
1] Kopieren Sie den folgenden Text und fügen Sie ihn in eine leere Textdatei (gedit) ein. 2] Bearbeiten Sie die beiden Zeilen im Kopfabschnitt, um die zu suchende Zeichenfolge und das zu durchsuchende Verzeichnis zu definieren. 3] Speichern Sie es als searchfor.py. 4] So führen Sie es aus: Öffnen Sie ein Terminal, geben Sie python3
+ ein space
, ziehen Sie das Skript in das Terminalfenster und drücken Sie die Eingabetaste. Die Liste der gefundenen Übereinstimmungen wird im Terminalfenster angezeigt
Im Fehlerfall wird dies vom Skript erwähnt.
#!/usr/bin/python3
import os
#-----------------------------------------------------
# give the searched word here in lowercase(!):
searchfor = "string_to_look_for"
# give the aimed directory here:
searchdir = "/path/to/search"
#-----------------------------------------------------
wordsize = len(searchfor)
unreadable = []
print("\nFound matches:")
for root, dirs, files in os.walk(searchdir, topdown=True):
for name in files:
file_subject = root+"/"+name
try:
with open(file_subject) as check_file:
words = check_file.read()
words_lower = words.lower()
found_matches_list = [i for i in range(len(words_lower)) if words_lower.startswith(searchfor, i)]
found_matches = [words[index:index+wordsize] for index in found_matches_list]
if len(found_matches) != 0:
print(file_subject, found_matches)
else:
pass
except Exception:
unreadable.append(file_subject)
if len(unreadable) != 0:
print("\ncould not read the following files:")
for item in unreadable:
print("unreadable:", item)