कैसे एक incrementally गिने dir में फाइल कॉपी करने के लिए?


2

उदाहरण के लिए, यदि dir 3 है:

mkdir 4; cp file 4

dirभी कहा जा सकता है 3 other text। फिर भी किसी भी पाठ mkdir 4को बढ़े हुए संख्या के अलावा होने की आवश्यकता नहीं है । सबसे ज्यादा संख्या का पता लगाने की जरूरत है।

जवाबों:


1

मान लें कि आपके पास क्रमिक रूप से क्रमांकित निर्देशिकाएं हैं जैसे: ' dirnameN',
जहां ' N' संख्या है।

आप (मूल निर्देशिका से) उच्चतम संख्या पा सकते हैं,

खोजो। -Type d -name dirname \ * | sed 's | dirname || | सॉर्ट-एन | पूंछ -1

तो, आप अपनी निर्देशिका नामों में पैटर्न का उपयोग इसे फ़िल्टर करने के लिए करते हैं (' sed') और संख्या छोड़ते हैं।
फिर, आप अंतिम संख्या ज्ञात करने के लिए संख्यात्मक रूप से क्रमबद्ध करते हैं।

उसके बाद, आप उसमें से एक जोड़ेंगे और उसी पैटर्न का उपयोग करके अपनी अगली निर्देशिका बनाने के लिए आगे बढ़ेंगे।

कहो, कुछ ऐसा है,

dirnamePattern = dirname
lastDirname = 11
newDirname = $ ((lastDirname +1))
newDirname = $ {dirnamePattern} $ {} newDirname

आपको दे देंगे ' dirname12'।


1

निम्नलिखित को एक पंक्ति में करना चाहिए:

mkdir $(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1))

फ़ोल्डरों को देखते हुए:

1 something
3 other text
some 5 thing
2 test

यह एक फ़ोल्डर बनाता है जिसका नाम है 6

यदि आप नाम की फ़ाइल कॉपी करना चाहते हैं file, तो बस कुछ इस तरह से करें:

name=$(($(find . -type d | sed -e 's/[^0-9]*//g' | sort -n | tail -n 1)+1)); mkdir $name; cp file $name

1
@nnbc खुशी यह मदद की। यदि यह आपके प्रश्न का उत्तर देता है, तो पोस्ट के बाईं ओर स्कोर के तहत चेकबॉक्स पर क्लिक करना न भूलें! :)
slhck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.