शेल स्क्रिप्ट, एक फ़ोल्डर पर चलना


2

मेरे पास बहुत बुनियादी शेल स्क्रिप्टिंग ज्ञान है।

मेरे पास फोटो हैं original इस तरह कई अलग फ़ोल्डर पर फ़ोल्डर

folder
  + folder1
    + original
  + folder2
    + original
  + folder3
    + original
  + folder4
    + original

का उपयोग करते हुए mogrify मैं एक के तहत अंगूठे बनाने की कोशिश कर रहा हूँ thumb इस के लिए एक संरचना के बाद फ़ोल्डर।

folder
  + folder1
    + original
    + thumb
  + folder2
    + original
    + thumb
  + folder3
    + original
    + thumb
  + folder4
    + original
    + thumb

मैं शेल स्क्रिप्ट लिखने में थोड़ा खो गया हूं जो इसके माध्यम से पुनरावृति कर सकता है। मैं ठीक हूं कि इसकी सेटिंग मोग्रिफाई कर दूंगा लेकिन मुझे समझ नहीं आया कि मोगरिफाई कमांड को चलाने के लिए प्रत्येक फोल्डर को इट्रेट करने के लिए स्क्रिप्ट कैसे बताएं


हम कुल कितनी फ़ाइलों के बारे में बात कर रहे हैं?
ephsmith

जवाबों:


4

लूप के लिए उपयोग करने के बजाय जहां आपके पास समस्याएँ होंगी यदि किसी भी फ़ाइल पथ में स्थान हैं, तो आप किसी निर्देशिका के अंतर्गत पुनरावर्ती रूप से देखने के लिए उपयोग कर सकते हैं और उन सभी फ़ाइलों पर एक कार्रवाई कर सकते हैं जिनके नाम एक पैटर्न से मेल खाते हैं। यदि सभी फ़ाइलों को प्रभावित करने की आवश्यकता है, तो बस -name विकल्प छोड़ दें या इसे फिट करने के लिए अनुकूलित करें।

find /path/to/directory -type f -name "*.png" -exec mogrify {} +

मोग्रिफ़ के विकल्पों का बेहतर उपयोग करने के लिए, आप xargs का उपयोग कर सकते हैं।

find /path/to/directory -type f -name "*.png" | xargs mogrify -path /path/to/thumbnails

अच्छी बात। मुझें यह पसंद है। क्या इसमें कोई संशोधन है जो परिणामस्वरूप निर्देशिका संरचना को उत्पन्न करेगा जो ओपी की इच्छा है? mogrify को मौजूदा डायरेक्टरी में चलाया जाएगा।
ephsmith

हाँ, mogrify इफ़्सिथ के समाधान में दिखाए गए अनुसार आउटपुट पैरामीटर लेता है: mogrify -path ./thumbnails/ $f
lonstar

1

मुझे पूरा यकीन है कि आपको प्राप्त होने वाली प्रतिक्रियाओं में बहुत भिन्नता दिखाई देगी। इसे करने के कुछ तरीके हैं। निम्नलिखित दृष्टिकोण बस का उपयोग करता है ls में निर्देशिका सूची के लिए वर्तमान निर्देशिका । यह तब पीएनजी फ़ाइलों (सूट के लिए संशोधित) की सूची प्राप्त करने के लिए उस निर्देशिका में बदल जाता है। Png फ़ाइलों में से प्रत्येक के लिए, mogrify कहा जाता है।

असल में, आप की आवश्यकता होगी

  1. इसे टेक्स्ट एडिटर में कॉपी करें।
  2. सूट करने के लिए mogrify कमांड वाली लाइन को संशोधित करें।
  3. सादगी के लिए, इसे एक सादे-पाठ फ़ाइल के रूप में उस निर्देशिका में सहेजें, जिसमें आप इसे चलाना चाहते हैं।
  4. फ़ाइल के लिए निष्पादित बिट सेट करें chmod +x /path/to/scriptname
  5. इसे निर्देशिका से चलाएँ ./scriptname

नीचे स्क्रिप्ट:

DIRS="$(find . -mindepth 1 -maxdepth 2 -type d)"

for d in $DIRS
do
    cd $d
    FILES="$(find . -name '*.png')"
    for f in $FILES
    do
    mogrify -path ./thumbnails/ $f
    done
    cd ..
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.