मुझे संदेह है कि यह बहुत मायने रखेगा।
मैं एक लूप का उपयोग करता हूं, सिर्फ इसलिए कि मुझे नहीं पता है कि सूची फ़ाइल में कितनी फाइलें सूचीबद्ध हैं, और मुझे नहीं पता (आम तौर पर) पता है कि क्या किसी भी फ़ाइल नाम में उनके स्थान हैं। एक कमांड प्रतिस्थापन जो तर्क की एक बहुत लंबी सूची उत्पन्न करेगा "परिणाम सूची बहुत लंबी" त्रुटि हो सकती है जब उत्पन्न सूची की लंबाई बहुत लंबी है।
मेरा लूप कैसा लगेगा
while IFS= read -r name; do
gunzip "$name"
done <file.list
यह अतिरिक्त रूप से मुझे कमांड के बाद डेटा को संसाधित करने के लिए कमांड डालने की अनुमति देगा gunzip
। वास्तव में, डेटा वास्तव में क्या है और इसके साथ क्या करने की आवश्यकता है, इसके आधार पर, इसे फाइल में सहेजे बिना इसे संसाधित करना भी संभव हो सकता है:
while IFS= read -r name; do
zcat "$name" | process_data
done <file.list
(जहां process_data
कुछ पाइपलाइन है जो मानक इनपुट से असंपीड़ित डेटा पढ़ती है)
यदि डेटा के प्रसंस्करण को इसके बारे में अनियंत्रित होने से अधिक समय लगता है, तो यह सवाल कि क्या लूप अधिक कुशल है या अप्रासंगिक नहीं है।
आदर्श रूप से , मैं हालांकि, फ़ाइल नाम की सूची से काम नहीं करना पसंद करूंगा, और इसके बजाय, फ़ाइल नाम का उपयोग करते हुए ग्लोबिंग पैटर्न
for name in ./*.gz; do
# processing of "$name" here
done
जहाँ ./*.gz
कुछ पैटर्न है जो प्रासंगिक फाइलों से मेल खाता है। इस तरह हम फाइलों की संख्या के आधार पर नहीं हैं और न ही फाइलनाम में उपयोग किए जाने वाले पात्रों पर निर्भर करते हैं (उनमें नईलाइन या अन्य व्हाट्सएप अक्षर हो सकते हैं, या डैश के साथ शुरू हो सकते हैं, आदि)
सम्बंधित:
gzip
आपके सिस्टम को शुरू होने में कितना समय लगता है, फाइल सूची में फाइलों की संख्या और उन फाइलों का आकार।