2013-06-25 6 views
5

मान लीजिए मैं कुछ निर्देशिका है, जो उप निर्देशिकाओं की एक संख्या शामिल है, और उन उपनिर्देशिका में से प्रत्येक में मैं एक ही नाम के साथ एक निर्देशिका बनाना चाहते हैं:फ़ोल्डर में सभी निर्देशिकाओं के लिए उप-निर्देशिका बनाएं

./dir-1 
./dir-2 
... 
./dir-n 

मैं चाहता हूँ mkdir */new-dir

ऐसा करने के लिए, लेकिन यह एक त्रुटि फेंकता है। इस बारे में जाने का सबसे अच्छा तरीका क्या है?

उत्तर

6
for dir in $(ls); do 
    mkdir "$dir/new-dir" 
done 
3
find . -type d | xargs -I "{x}" mkdir "{x}"/new-dir 

आप निर्देशिका के पहले स्तर तक कम करने के लिए

find . -maxdepth 1 -type d | xargs -I "{x}" mkdir "{x}"/new-dir 
0

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

for dir in $(ls -d */); do mkdir "$dir/2015" done

+0

कृपया, 'ls' के उत्पादन को पार्स नहीं है। धन्यवाद। –

3

कमाल है कि इस सवाल कभी नहीं ओ एक समझदार जवाब btained:

shopt -s nullglob 
for i in */; do 
    mkdir -- "${i}newdir" 
done 
  • यह (रिक्त स्थान, वाइल्डकार्ड, आदि) फ़ाइल नामों में अजीब प्रतीकों के बारे में 100% सुरक्षित है।
  • shopt -s nullglob ताकि ग्लोब कुछ भी नहीं करने के लिए फैलता है अगर कोई मेल खाते हैं।
  • --mkdir में विकल्पों में से अंत बताने के लिए (एक नाम एक हाइफन के साथ शुरू के साथ एक निर्देशिका है या नहीं, mkdir एक विकल्प के रूप में यह व्याख्या करने की कोशिश कर भ्रमित नहीं है)।

यह चुपचाप छिपा निर्देशिका ध्यान नहीं देता। आप छिपा निर्देशिकाओं पर यह कार्रवाई करने की जरूरत है, बस का पालन करते हुए लाइन shopt -s nullglob बदल देते हैं:

shopt -s nullglob dotglob 

dotglob ताकि globs भी विचार छिपी हुई फ़ाइलें/निर्देशिका।

आप mkdir का केवल एक मंगलाचरण चाहते हैं:

shopt -s nullglob 
dirs=(*/) 
mkdir -- "${dirs[@]/%/newdir}" 
+0

कमाल है कि मैं भी downvoted गया! downvoters रेजिंग, एक नोट छोड़ कृपया, धन्यवाद। –

संबंधित मुद्दे