Chciałbym utworzyć listę sum kontrolnych md5 dla wszystkich plików w katalogu.
Chcę cat filename | md5sum > ouptput.txt
. Chcę to zrobić w 1 kroku dla wszystkich plików w moim katalogu.
Każda pomoc byłaby świetna.
command-line
Walter Wayne Leutwyler
źródło
źródło
Odpowiedzi:
Możesz przekazać
md5sum
wiele nazw plików lub rozszerzeń bash:Jeśli chcesz się zachwycić, możesz użyć funkcji takich jak
find
drążenie w dół i filtrowanie plików, a także praca rekurencyjna:źródło
md5sum
md5sum *
find -type f -exec md5sum '{}' +
i `find -type f -exec md5sum '{}' 'Udało mi się to. Dzięki :)openssl md5 * > checklist.txt
**
rekurencyjnie (np. Zsh), jest to jeszcze prostsze:md5sum **/* 2>/dev/null
Świetnym programem do tworzenia / weryfikacji sum kontrolnych jest wysypka. Tworzy nawet pliki kompatybilne z SFV i sprawdza je.
Obsługuje MD4, MD5, SHA1, SHA512, CRC32 i wiele innych.
Ponadto może tworzyć rekurencyjne (opcja -r), takie jak md5deep lub sha1deep.
Wreszcie możesz sformatować dane wyjściowe pliku sumy kontrolnej; na przykład:
wypisuje plik CSV zawierający pełną ścieżkę plików rekurencyjnie rozpoczynającą się od
/home
katalogu.Uważam, że niezwykle przydatna jest nawet opcja zmiany nazwy plików przez wstawienie sumy crc32 do nazwy.
Możesz zmienić „md5sum” za pomocą „rhash” w przykładach PhoenixNL72.
źródło
Oto dwa bardziej obszerne przykłady:
Utwórz plik md5 w każdym katalogu, który jeszcze go nie ma, z bezwzględnymi ścieżkami:
Utwórz plik md5 w każdym folderze, który jeszcze go nie ma: żadnych ścieżek, tylko nazwy plików:
Różnica między 1 a 2 polega na sposobie prezentacji plików w wynikowym pliku md5.
Polecenia wykonują następujące czynności:
Dane wyjściowe całego skryptu można przekierować do pliku (.....; done> test.log) lub przesłać do innego programu (np. Grep). Dane wyjściowe pokażą tylko, które katalogi zostały pominięte, a które przetworzone.
Po udanym uruchomieniu skończysz z plikiem @ md5Sum.md5 w każdym podkatalogu bieżącego katalogu
Nazwałem plik @ md5Sum.md5, aby znalazł się na górze katalogu w udziale samby.
Weryfikowanie wszystkich plików @ md5Sum.md5 można wykonać za pomocą następujących poleceń:
Następnie możesz grepować plik checklog.txt za pomocą grep -v OK, aby uzyskać listę wszystkich plików, które się różnią.
Aby ponownie wygenerować plik @ md5Sum.md5 w określonym katalogu, na przykład po zmianie lub dodaniu plików usuń plik @ md5Sum.md5 lub zmień jego nazwę i ponownie uruchom komendę generowania.
źródło
Dotknąłem tego problemu i chociaż powyższe rozwiązania są eleganckie, chciałem szybkiego i brudnego włamania do tej sytuacji: 1 katalog z podkatalogami o jeden poziom głęboko w środku.
Wpisz katalog w powłoce i uruchom:
Spowoduje to pobranie wszystkich plików z katalogu najwyższego poziomu, usunięcie ostrzeżenia o błędzie dotyczącego podkatalogów będących katalogami, a następnie uruchomienie md5sums na zawartości podkatalogu. Zaleta: łatwa do zapamiętania, robi dokładnie to, co powinna. Zawsze się mylę ze składnią find i nigdy nie pamiętam jej z góry głowy, więc nie trzeba zapętlać itp., Zajmując się spacjami w nazwach katalogów, ta jedna linijka działała dobrze. Nie jest to solidne, wydajne rozwiązanie, nie nadaje się do> 1 poziomu podkatalogów, ale szybkie i łatwe rozwiązanie problemu.
źródło