मुझे यहाँ थोड़ी गलतफहमी है। इसलिए, मैं इन आदेशों को निष्पादित करता हूं:

mkdir Week\ {1..13}
touch {1..13}.txt

mv {1..13}.txt Week\ {1..13}

मेरा इरादा 1.txt को सप्ताह 1, 2.txt से सप्ताह 2 और इसी तरह आगे बढ़ाना था, लेकिन सभी फाइलें "सप्ताह 13" निर्देशिका में समाप्त हो गईं और मैं यह नहीं समझ सका कि यह इस तरह कैसे काम करता है। क्या कोई मुझे यह समझा सकता है यदि संभव हो तो?

0
Toma Margishvili 8 जिंदा 2021, 20:04

1 उत्तर

सबसे बढ़िया उत्तर

घुंघराले ब्रेसिज़ "ब्रेस एक्सपेंशन" में विस्तारित होते हैं (देखें man bash)। तो आपकी अंतिम पंक्ति का विस्तार किया गया है

 mv 1.txt 2.txt 3.txt ... 13.txt Week\ 1 Week\ 2 ... Week\ 13

यदि आप man mv में देखते हैं, तो आप देखेंगे

  mv [OPTION]... [-T] SOURCE DEST
  mv [OPTION]... SOURCE... DIRECTORY
  mv [OPTION]... -t DIRECTORY SOURCE...

यह कुछ भी सूचीबद्ध नहीं करता है

mv [OPTION] SOURCE1 DEST1 SOURCE2 DEST2

आप निर्देशिकाओं में फ़ाइलों को वितरित करने के लिए लूप का उपयोग कर सकते हैं:

for n in {1..13} ; do
    mv "$n".txt "Week $n"
done

यदि आप फ़ाइलों के साथ कुछ और नहीं कर रहे हैं, लेकिन उन्हें बना रहे हैं, तो आप वास्तव में उन्हें सीधे लूप में बना सकते हैं, इसलिए आपको शुरुआत में उन्हें उसी निर्देशिका में बनाने की आवश्यकता नहीं है:

for n in {1..13} ; do
    mkdir "Week $n"
    touch "Week $n/$n.txt"
done
4
choroba 8 जिंदा 2021, 21:26