2012-01-26 8 views
11

बनाने अनुप्रेषित मैं कैसे निम्न आदेशमार फ़ोल्डर

echo "something" > "$f" 

जहां $f हो folder/file.txt की तरह कुछ फ़ोल्डर folder पैदा करेगा यदि मौजूद नहीं है हो सकता है?

यदि मैं ऐसा नहीं कर सकता, तो मैं निर्देशिका 'बी' में निर्देशिका 'ए' में सभी फ़ोल्डरों (सामग्री के बिना) को डुप्लिकेट कैसे कर सकता हूं?

जैसे कि मेरे पास

एक/f1/
एक/f2/
एक/f3/

मैं करना चाहते हैं

बी/f1/
बी/f2/
बी/f3/

उत्तर

11

अन्य यहाँ जवाब बाहरी कमांड "dirname" का उपयोग कर रहे हैं। यह बाहरी उपयोगिता को कॉल किए बिना किया जा सकता है।

mkdir -p "${f%/*}" 

तुम भी जाँच कर सकते हैं निर्देशिका पहले से मौजूद है, लेकिन यह वास्तव में mkdir -p साथ की आवश्यकता नहीं: संकेत के लिए

mydir="${f%/*}" 
[[ -d $mydir ]] || mkdir -p "$mydir" 
+0

धन्यवाद, लेकिन सही सिंटैक्स वास्तव में '$ {है एफ%/*} ' – baruch

+0

मैंने जवाब अपडेट किया है। क्षमा करें, मैंने आपको 'बेसनाम' का विकल्प दिया था, न कि 'dirname'। – jordanm

5

कोशिश

mkdir -p `dirname $f` && echo "something" > $f 
1

आप फ़ाइल पर लिखने से पहले फ़ोल्डर बनाने के लिए mkdir -p उपयोग कर सकते हैं:

mkdir -p "$(dirname $f)" 
0
echo "something" | install -D /dev/stdin $f 
संबंधित मुद्दे