मैं एक निर्देशिका में सभी फ़ाइलों के लिए एक md5 चेकसम सूची बनाना चाहूंगा।
मैं करना चाहता हूं cat filename | md5sum > ouptput.txt। मैं अपनी निर्देशिका में सभी फ़ाइलों के लिए 1 चरण में ऐसा करना चाहता हूं।
किसी भी सहायता महान होगा।
मैं एक निर्देशिका में सभी फ़ाइलों के लिए एक md5 चेकसम सूची बनाना चाहूंगा।
मैं करना चाहता हूं cat filename | md5sum > ouptput.txt। मैं अपनी निर्देशिका में सभी फ़ाइलों के लिए 1 चरण में ऐसा करना चाहता हूं।
किसी भी सहायता महान होगा।
जवाबों:
आप md5sumकई फ़ाइल नाम या बैश विस्तार पास कर सकते हैं :
$ md5sum * > checklist.chk # generates a list of checksums for any file that matches *
$ md5sum -c checklist.chk # runs through the list to check them
cron: OK
database.sqlite3: OK
fabfile.py: OK
fabfile.pyc: OK
manage.py: OK
nginx.conf: OK
uwsgi.ini: OK
यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप findफ़ाइलों को ड्रिल करने और फ़िल्टर करने के साथ-साथ पुनरावर्ती रूप से काम करने जैसी चीजों का उपयोग कर सकते हैं :
find -type f -exec md5sum "{}" + > checklist.chk
md5sum, उप निर्देशिकाओं के अंदर फ़ाइलों को प्राप्त करने के लिए उपरोक्त का उपयोग कैसे करें, उपर्युक्त md5sum *उपनिर्देशिका स्तर में यह कहकर जा रहा है ... एक निर्देशिका है
find -type f -exec md5sum '{}' +और '-type f -exec md5sum' {} '' मैं प्राप्त करने में सक्षम था। धन्यवाद :)
openssl md5 * > checklist.txt
**पुनरावर्ती (जैसे zsh) का मूल्यांकन करने में प्रसन्न है , तो यह और भी सरल है:md5sum **/* 2>/dev/null
एक महान चेकसम निर्माण / सत्यापन कार्यक्रम rhash है। यह एसएफवी संगत फाइलें भी बनाता है, और उन्हें भी जांचता है।
यह md4, md5, sha1, sha512, crc32 और कई अन्य का समर्थन करता है।
इसके अलावा यह md5deep या sha1deep जैसे पुनरावर्ती निर्माण (-r विकल्प) कर सकता है।
अंतिम लेकिन कम से कम आप चेकसम फ़ाइल के आउटपुट को प्रारूपित नहीं कर सकते हैं; उदाहरण के लिए:
rhash --md5 -p '%h,%p\n' -r /home/
एक CSV फ़ाइल को /homeनिर्देशिका के साथ पुन: प्रारंभ करने वाली फ़ाइलों के पूर्ण पथ सहित आउटपुट करता है ।
मैं अत्यंत उपयोगी भी -e विकल्प नाम में crc32 योग सम्मिलित करके फ़ाइलों का नाम बदलें।
आप "rdsh" के साथ "md5sum" को फीनिक्सएनएल72 उदाहरणों में बदल सकते हैं।
यहाँ दो और व्यापक उदाहरण हैं:
प्रत्येक निर्देशिका में एक md5 फ़ाइल बनाएं जिसमें पहले से ही एक नहीं है, पूर्ण पथ के साथ:
find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done
प्रत्येक फ़ोल्डर में एक md5 फ़ाइल बनाएं जिसमें पहले से ही एक नहीं है: कोई पथ नहीं, केवल फ़ाइल नाम:
find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] && md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done
1 और 2 के बीच क्या अंतर है, जिस तरह से परिणामी md5 फ़ाइल में फाइल प्रस्तुत की जाती है।
कमांड निम्नलिखित करते हैं:
इस संपूर्ण स्क्रिप्ट के आउटपुट को एक फ़ाइल (.....; किया गया> परीक्षण.लॉग) या किसी अन्य प्रोग्राम (जैसे grep) पर पाइप किया जा सकता है। आउटपुट आपको केवल यह बताएगा कि कौन सी निर्देशिकाएं कहां छोड़ दी गई हैं और किस पर कार्रवाई की गई है।
एक सफल रन के बाद, आप अपने वर्तमान निर्देशिका के प्रत्येक उपनिर्देशिका में एक @ md5Sum.md5 फ़ाइल के साथ समाप्त हो जाएंगे
मैंने फ़ाइल का नाम @ md5Sum.md5 रखा ताकि यह सांबा शेयर में निर्देशिका के शीर्ष पर सूचीबद्ध हो जाए।
सभी @ md5Sum.md5 फ़ाइलों का सत्यापन अगले आदेशों द्वारा किया जा सकता है:
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
बाद में आप grep -v ओके का उपयोग करके checklog.txt को अलग कर सकते हैं जो कि सभी फाइलों की एक सूची प्राप्त करते हैं।
किसी विशिष्ट निर्देशिका में @ md5Sum.md5 को पुनर्जीवित करने के लिए, जब आपने उदाहरण के लिए फ़ाइलों को बदला या जोड़ा है, या तो @ md5Sum.md5 फ़ाइल को हटा दें या इसे नाम बदलें और फिर से जेनरेट कमांड चलाएं।
मैंने इस मुद्दे को मारा, और जब ऊपर के समाधान सुरुचिपूर्ण हैं, तो मैं इस स्थिति के लिए एक त्वरित और गंदी हैक चाहता था: 1 निर्देशिका, उपनिर्देशिका के साथ एक स्तर गहरा इसके अंदर।
इसलिए, निर्देशिका को शेल में दर्ज करें और चलाएं:
md5sum * */* 2>/dev/null > md5sum.md5
यह शीर्ष स्तर निर्देशिका में सभी फाइलें प्राप्त करता है, उप निर्देशिकाओं के बारे में त्रुटि चेतावनी को हटाता है, और फिर उपनिर्देशिका सामग्री पर md5sums चलाता है। लाभ: याद रखने में आसान, यह वही करता है जो इसे करना चाहिए। मैं हमेशा वाक्यविन्यास को खोजने में भ्रमित हो जाता हूं और इसे अपने सिर के ऊपर से कभी भी याद नहीं कर सकता हूं, इसलिए लूप आदि की कोई आवश्यकता नहीं है, निर्देशिका नामों में रिक्त स्थान से निपटते हुए, इस एक लाइनर ने ठीक काम किया। नहीं एक मजबूत शक्तिशाली समाधान,> उप स्तर के> 1 स्तर के लिए अच्छा नहीं है, लेकिन समस्या के लिए एक त्वरित और आसान समाधान।