वाइल्डकार्ड फ़ोल्डर्स के माध्यम से लूपिंग और बाश में कई कमांड्स निष्पादित करना


1

मेरे पास MenuSettings नामक फ़ाइलों की सामग्री को बदलने के लिए कमांड का एक सेट है जो एक फ़ोल्डर में निर्देशित होने पर ठीक काम करता है।

cd /Applications/snowflake/table-updater/Testing/Applications/Salford_100

sed -e '1r MenuSettings.bak' -e '1,2d' MenuSettings.txt >> MenuSettings2.txt
cat MenuSettings2.txt | sed '/^AppName: */{h;s///;x;}; /^\(AppName_.._..:\).*/{s//\1/;G;s/\n/ /;}' >> MenuSettings3.txt
rm -v MenuSettings2.txt
mv -v MenuSettings3.txt MenuSettings.txt

हालाँकि जब मैं उन्हें यह लिखने वाले कई फ़ोल्डरों के माध्यम से चलाने की कोशिश करता हूं

for dir in $(find salford_* -type d);do 

sed -e '1r MenuSettings.bak' -e '1,2d' MenuSettings.txt >> MenuSettings2.txt
cat MenuSettings2.txt | sed '/^AppName: */{h;s///;x;}; /^\(AppName_.._..:\).*/{s//\1/;G;s/\n/ /;}' >> MenuSettings3.txt
rm -v MenuSettings2.txt
mv -v MenuSettings3.txt MenuSettings.txt

done

मुझे त्रुटि मिलती है

sed: MenuSettings.txt: No such file or directory

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


1
सुपरयूजर में आपका स्वागत है। आप उस निर्देशिका में कभी नहीं बदलते हैं, है ना?
CMD

धन्यवाद, मैं salford_xxx नाम के हर dir में जाता हूं और MenuSettings.txt फ़ाइल को संपादित करता हूं, जहां मुझे कई सेगमेंट की जगह चाहिए, इसलिए sed का उपयोग किया जा रहा है।
एगफूट 16

जवाबों:


0

forआपके लिए निर्देशिकाओं को नहीं बदलता है। आपको ${dir}/अपनी फ़ाइल संदर्भों के सामने रखना चाहिए , और शेल चर व्याख्या की अनुमति देने के 'लिए कुछ उद्धरणों को बदलना चाहिए"

for dir in $(find salford_* -type d);do 

sed -e "1r ${dir}/MenuSettings.bak" -e '1,2d' ${dir}/MenuSettings.txt >> ${dir}/MenuSettings2.txt
sed '/^AppName: */{h;s///;x;}; /^\(AppName_.._..:\).*/{s//\1/;G;s/\n/ /;}' ${dir}/MenuSettings2.txt >> ${dir}/MenuSettings3.txt
rm -v ${dir}/MenuSettings2.txt
mv -v ${dir}/MenuSettings3.txt ${dir}/MenuSettings.txt

done

मैंने "बिल्ली का एक बेकार उपयोग" भी हटा दिया। गूगल कि


धन्यवाद, यह वास्तव में मददगार था। यह देखते हुए कि मेरे पास फ़ोल्डर्स में उपनिर्देशिकाएं भी हैं, मैंने -maxdepth पैरामीटर को भी ढूंढा।
एगफूट

फिर कृपया मेरे उत्तर को स्वीकार करें, जिससे मेरी प्रतिष्ठा बढ़ेगी और मैं दुनिया पर राज कर सकता हूं।
वाल्टिनेटर

Ive इसे बनाया है!
एगफूट 16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.