Saya ingin membuat daftar checksum MD5 untuk semua file dalam direktori.
Saya ingin cat filename | md5sum > ouptput.txt
. Saya ingin melakukan ini dalam 1 langkah untuk semua file di direktori saya.
Bantuan apa pun akan bagus.
command-line
Walter Wayne Leutwyler
sumber
sumber
Jawaban:
Anda dapat melewati
md5sum
beberapa nama file atau ekspansi bash:Jika Anda ingin menjadi mewah, Anda dapat menggunakan hal-hal seperti
find
menelusuri dan memfilter file, serta bekerja secara rekursif:sumber
md5sum
file-file di dalam sub direktori,md5sum *
emisi di atas masuk ke tingkat subdirektori dengan mengatakan ... adalah direktorifind -type f -exec md5sum '{}' +
dan `find -type f -exec md5sum '{}'` Saya bisa mendapatkannya. Terima kasih :)openssl md5 * > checklist.txt
**
secara rekursif (seperti zsh), itu bahkan lebih sederhana:md5sum **/* 2>/dev/null
Program pembuatan / verifikasi checksum yang bagus adalah rhash. Itu bahkan menciptakan file yang kompatibel dengan SFV, dan memeriksanya juga.
Ini mendukung md4, md5, sha1, sha512, crc32 dan banyak lainnya.
Selain itu dapat melakukan penciptaan rekursif (opsi -r) seperti md5deep atau sha1deep.
Terakhir, Anda dapat memformat output file checksum; sebagai contoh:
mengeluarkan file CSV termasuk path lengkap file secara rekursif dimulai dengan
/home
direktori.Saya menemukan sangat berguna bahkan opsi -e mengubah nama file dengan memasukkan jumlah crc32 ke nama.
Anda dapat mengubah "md5sum" dengan "rhash" pada contoh PhoenixNL72.
sumber
Berikut adalah dua contoh yang lebih luas:
Buat file md5 di setiap direktori yang belum memilikinya, dengan jalur absolut:
Buat file md5 di setiap folder yang belum memiliki satu: tidak ada jalur, hanya nama file:
Apa yang berbeda antara 1 dan 2 adalah cara file disajikan dalam file md5 yang dihasilkan.
Perintahnya lakukan hal berikut:
Keluaran seluruh skrip ini dapat diarahkan ke file (.....; selesai> test.log) atau disalurkan ke program lain (seperti grep). Output hanya akan memberi tahu Anda direktori mana yang dilewati dan yang telah diproses.
Setelah menjalankan yang sukses, Anda akan berakhir dengan file @ md5Sum.md5 di setiap subdirektori dari direktori Anda saat ini
Saya menamai file @ md5Sum.md5 sehingga akan terdaftar di bagian atas direktori di share samba.
Memverifikasi semua file @ md5Sum.md5 dapat dilakukan dengan perintah berikut:
Setelah itu Anda dapat grep checklog.txt menggunakan grep -v OK untuk mendapatkan daftar semua file yang berbeda.
Untuk membuat ulang @ md5Sum.md5 di direktori tertentu, ketika Anda mengubah atau menambahkan file misalnya, hapus file @ md5Sum.md5 atau ganti nama dan jalankan perintah generate lagi.
sumber
Saya mengalami masalah ini, dan sementara solusi di atas elegan, saya ingin hack cepat dan kotor untuk situasi ini: 1 direktori, dengan subdirektori satu tingkat jauh di dalamnya.
Jadi, masukkan direktori di shell dan jalankan:
Ini mendapatkan semua file di direktori tingkat atas, menghilangkan peringatan kesalahan tentang sub direktori menjadi direktori, dan kemudian menjalankan md5sums pada konten subdirektori. Keuntungan: mudah diingat, melakukan apa yang seharusnya dilakukan. Saya selalu bingung dengan menemukan sintaks dan tidak pernah bisa mengingatnya dari atas kepala saya, jadi tidak perlu untuk mengulang dll, berurusan dengan spasi dalam nama direktori, liner yang satu ini bekerja dengan baik. Bukan solusi tangguh yang kuat, tidak baik untuk subdirektori level> 1, tetapi solusi cepat dan mudah untuk masalah ini.
sumber