Ich suche in meinem Dateisystem häufig nach Dateien, indem ich entweder den tree
Befehl und grep
oder den find
Befehl verwende. Vor kurzem habe ich jedoch Inhalte von einer Site heruntergeladen, aber vergessen, wo ich sie gespeichert habe. Jetzt kenne ich die SHA256-Summe davon, aber ich kenne ihren Namen nicht und kenne auch nicht den Inhalt. Gibt es also eine Möglichkeit, mein System nach Dateien zu durchsuchen, die dieser bestimmten Hashsumme entsprechen? Und wenn es keine bereits integrierte einfache Möglichkeit gibt, kann mir dann jemand ein Skript vorschlagen, mit dem ich diese Aufgabe erledigen kann?
Betriebssysteminformationen:
Description: Ubuntu 15.04
Release: 15.04
Antwort1
Benutze das:
#!/bin/bash
saved='b3eeb9430063ee4db5f80b97d4dfb4c4f7667e6e58fd12f849a4ed6779b7f212'
find /home/user/ -type f | while IFS= read -r file; do
[[ "$(sha256sum "$file" | cut -d' ' -f1)" == $saved ]] && echo "$file"
done
saved
enthält die Hashsumme der Datei, die SieEs findet alle Dateien in
/home/user/
(ersetzen Sie es durch den/die gewünschten Speicherort(e)) und Unterverzeichnissen und gleicht ihre Hashsummen mitsaved
Bei Übereinstimmung wird der Dateiname gedruckt
Führen Sie das Skript aus, sudo
wenn Sie nach Orten suchen möchten, für die Sie nicht über die erforderlichen Berechtigungen verfügen.
Beachten Sie, dass dieser Vorgang sehr CPU-intensiv ist, da er die Hashes aller Dateien berechnet und dann versucht, sie mit der saved
einen abzugleichen. Mir ist kein eigenständiges Tool bekannt, das das erreichen kann, was Sie wollen, daher ist dies angesichts der vorliegenden Aufgabe und Eingabe möglicherweise der richtige Weg.
Beachten Sie auch, dass Sie die Anzahl der zu durchsuchenden Dateien minimieren können, indem Sie entsprechende Optionen anwenden, find
z. B. wenn auf die Datei innerhalb der letzten 24 Stunden zugegriffen wurde find /location -atime 0 -type f
.