बैश स्क्रिप्ट में फ़ाइल का आकार कैसे प्राप्त करें

How Get Size File Bash Script



शेल स्क्रिप्ट लिखते समय, हम ऐसी स्थिति में आ सकते हैं जहां हमें फ़ाइल के आकार को जानने की आवश्यकता होती है। उदाहरण के लिए, आपको अन्य क्रियाओं को करने के लिए इस आकार का उपयोग करने की आवश्यकता हो सकती है, जैसे फ़ाइल को किसी भिन्न निर्देशिका में ले जाना या उसे हटाना।

यह ट्यूटोरियल उन त्वरित विधियों पर चर्चा करेगा जिनका उपयोग आप निर्दिष्ट प्रारूप में फ़ाइल आकार प्राप्त करने के लिए बैश स्क्रिप्ट में कर सकते हैं जैसे कि बाइट्स, किलोबाइट्स, मेगाबाइट्स, या गीगाबाइट्स।







विधि 1: एलएस कमांड

पहली विधि अच्छे पुराने ls कमांड का उपयोग करना है। जब अन्य कमांड के साथ जोड़ा जाता है, तो ls कमांड फ़ाइल के आकार को पकड़ सकता है।



स्क्रिप्ट को लागू करने के लिए, हमें फ़ाइल के पूर्ण पथ की आवश्यकता है, फ़ाइल जानकारी को ls के साथ सूचीबद्ध करें, और awk जैसे कमांड का उपयोग करके आकार को पकड़ें।



इसके लिए एक नमूना स्क्रिप्ट इस तरह दिखेगी:





#!/बिन/बैश
फेंक दिया 'फ़ाइल का पूरा पथ दर्ज करें।'
पढ़ना फ़ाइल
फाइल का आकार= $(रास -एलएचओ $फ़ाइल | awk '{प्रिंट $5}')
फेंक दिया '$फ़ाइलका आकार है$filesize'

उपरोक्त लिपि अपेक्षाकृत सरल है। इको और रीड कमांड का उपयोग करके, हमें फ़ाइल के पूर्ण पथ का नाम मिलता है।

इसके बाद, हम मानव-पठनीय प्रारूप में सभी निर्देशिकाओं और आकार को सूचीबद्ध करने के लिए ls -lh कमांड का उपयोग करते हैं, और अंत में, आउटपुट को awk पर पास करते हैं और आकार को 5 के रूप में पकड़ते हैंवांचर।



निम्नलिखित स्क्रिप्ट का एक उदाहरण है।

chmod +x size.sh
./ size.sh

उसके लिए आउटपुट यहां दिया गया है:

सूडो ./size.sh
फ़ाइल का पूरा पथ दर्ज करें
/आदि/पासवार्ड
/etc/passwd का आकार 2.9K . है

विधि 2: wc कमांड

एक अन्य विधि जिसका उपयोग हम बैश स्क्रिप्ट में फ़ाइल के आकार को हथियाने के लिए कर सकते हैं, वह है wc कमांड। wc कमांड बाइट्स में शब्दों की संख्या, आकार और फ़ाइल के आकार को लौटाता है।

अभी:

जैसा कि आप जानते हैं, फ़ाइल आकार को बाइट्स में पढ़ना बहुत आसान नहीं है। इसका मुकाबला करने के लिए, हम एक साधारण मेनू लागू कर सकते हैं और उपयोगकर्ता से केबी, एमबी और जीबी जैसे आकार प्रारूप पूछ सकते हैं।

चयनित प्रारूप के आधार पर, हम बाइट्स को उक्त प्रारूप में बदल देंगे।

इस तरह के तर्क को लागू करने के लिए यहां एक उदाहरण स्क्रिप्ट है:

#!/बिन/बैश
फेंक दिया 'आकार प्रारूप का चयन करें, संख्यात्मक मानों का उपयोग करें (बाइट्स के लिए 1, किलोबाइट्स के लिए 2, आदि)'
फेंक दिया '''
1. बाइट्स
2. किलोबाइट्स
3. मेगाबाइट्स
4. गीगाबाइट्स
'
''
फेंक दिया ************************************************* *********'
पढ़नाप्रारूप

फेंक दिया 'लक्ष्य फ़ाइल का पूरा पथ दर्ज करें:'
पढ़ना फ़ाइल
फाइल का आकार= $(स्वागत -सी $फ़ाइल | awk '{प्रिंट $1}')
अगर [[('$प्रारूप'==1)]];
फिर
फेंक दिया '$फ़ाइललगभग है$filesizeबाइट्स'
एलिफ [[('$प्रारूप'==2)]];
फिर
लगभग= $(बीसी <<<'पैमाना = 3;$filesize/ 1024 ')
फेंक दिया '$फ़ाइललगभग है$ केबीकेबी '
एलिफ [[('$प्रारूप'==3)]];
फिर
एमबी= $(बीसी <<<'पैमाना = 6;$filesize/ 1048576 ')
फेंक दिया '$फ़ाइललगभग है$एमबीएमबी '

एलिफ [[('$प्रारूप'==4)]];
फिर
जीबी= $(बीसी <<<'पैमाना = 12;$filesize/ १०७३७४१८२४ ')
फेंक दिया '$फ़ाइललगभग है$ जीबीजीबी '
अन्यथा
फेंक दिया 'गलत प्रारूप।'
बाहर जाएं
होना

ऊपर की लिपि में, हम उपयोगकर्ता को फ़ाइल आकार प्रारूप में प्रवेश करने के लिए कहकर शुरू करते हैं। बैश इस इनपुट को पढ़ता है और इसे फॉर्मेट वेरिएबल में स्टोर करता है।

इसके बाद, हम उपयोगकर्ता को फ़ाइल पथ के लिए संकेत देते हैं और इस चर को एक फ़ाइल में संग्रहीत करते हैं।

अगला चरण निर्दिष्ट फ़ाइल पर wc -c-command को कॉल करता है। चूंकि wc -c फ़ाइल का आकार बाइट्स और फ़ाइल के पथ में लौटाता है, हम AWK का उपयोग केवल फ़ाइल आकार को हथियाने के लिए करते हैं। हम आकार को बाइट्स में फाइलसाइज के रूप में स्टोर करते हैं।

अंत में, हम यह जांचने के लिए एक सरल if स्टेटमेंट लागू करते हैं कि आकार प्रारूप या तो 1 (बाइट्स), 2 (किलोबाइट्स), 3 (मेगाबाइट्स), 4 (गीगाबाइट) है। फिर हम फ़ाइल आकार को बाइट्स में निर्दिष्ट प्रारूप में बदलने के लिए bc कमांड का उपयोग करते हैं।

ध्यान दें: हम प्रति मूल्यांकन दशमलव की संख्या को समायोजित करने के लिए bc कमांड के लिए एक चर पैमाने का उपयोग करते हैं।

नीचे दी गई छवि दिखाती है कि स्क्रिप्ट कैसे काम करती है।

एक और नोट : उपरोक्त लिपि शुद्ध नंगे हड्डी है और इसलिए महत्वपूर्ण सुधारों के लिए खुला है। बेझिझक इसे सुधारें और अपनी आवश्यकताओं के अनुसार इसे सुधारें।

विधि 3: स्टेट कमांड का उपयोग करना

हम स्टेट कमांड को नहीं भूल सकते। स्टेट कमांड का उपयोग करके, हम एक फाइल या फाइल सिस्टम के बारे में विस्तृत जानकारी प्रदर्शित कर सकते हैं।

स्टेट कमांड आकार को बाइट्स में भी लौटाता है। आप प्रारूप का चयन करने के लिए उपरोक्त स्क्रिप्ट में समान तर्क का उपयोग कर सकते हैं।

स्टेट कमांड का उपयोग करके एक साधारण स्क्रिप्ट यहां दी गई है:

#!/बिन/बैश
फेंक दिया 'फ़ाइल पथ दर्ज करें।'
पढ़ना फ़ाइल
फाइल का आकार= $(राज्य -सी %एस$फ़ाइल)
फेंक दिया '$फ़ाइलसटीक है$filesizeबाइट्स।'

समापन का वक्त

इस ट्यूटोरियल ने तीन विधियों पर चर्चा की है जिनका उपयोग आप बैश स्क्रिप्ट का उपयोग करके फ़ाइल का आकार प्राप्त करने के लिए कर सकते हैं। यह नोट करना अच्छा है कि इसे प्राप्त करने के लिए लिनक्स के पास उपकरणों और विधियों का एक व्यापक संग्रह है। जो आपके लिए काम करता है उसे ढूंढें और उसके साथ रहें।