मैं फ़ाइलों को एक निर्देशिका से दूसरी निर्देशिका में ले जाना चाहता हूँ
find /data/1990 -name "*.dat" -exec mv {} /data1/1990/ \;
वह तो आसान था। अब मेरे पास /data/ कई वर्षों में 1990,1991,1992,1993,1994,1995 . है
इन वर्षों में कैसे लूप करें?
3 जवाब
आप इसे इस तरह कर सकते हैं:
for i in `ls /data/`;
do
echo "element=$i"; #put your code for each element
done
मैं अपनी वर्तमान कार्यशील निर्देशिका को बदलकर अपने जीवन को आसान बनाऊंगा:
cd /data
find 199[012345] -name "*.dat" -exec echo mv {} /data1/{} \;
आपने हमें यह नहीं बताया कि आप किस शेल का उपयोग कर रहे हैं (और वे प्रोग्रामिंग भाषाओं की तरह ही भिन्न होते हैं)। लेकिन बैश या zsh में, वर्ष सीमा प्रदान करने के लिए आप घुंघराले कोष्ठक का उपयोग कर सकते हैं, अर्थात:
for year in {1990..1995}; do
find /data/$year -name "*.dat" -exec mv {} /data1/$year \;
done
आप अंकगणितीय मूल्यांकन और अधिक आधुनिक (?) ब्लॉक सिंटैक्स का भी उपयोग कर सकते हैं:
for ((year=1990; year<1995; year++)) {
find /data/$year -name "*.dat" -exec mv {} /data1/$year \;
}
संबंधित सवाल
नए सवाल
linux
LINUX QUESTIONS को संबंधित होना चाहिए। इस टैग का उपयोग केवल तभी करें जब आपका प्रश्न लिनक्स एपीआई या लिनक्स-विशिष्ट व्यवहार का उपयोग करके प्रोग्रामिंग से संबंधित हो, न कि केवल इसलिए कि आप लिनक्स पर अपने कोड को चलाने के लिए होते हैं। यदि आपको लिनक्स समर्थन की आवश्यकता है तो आप https://unix.stackexchange.com या विशिष्ट लिनक्स वितरण की स्टैक एक्सचेंज साइट जैसे https://askubuntu.com या https://elementaryos.stackexchange.com/ की कोशिश कर सकते हैं
find
अधिक है। आप बसmv
का उपयोग कर सकते हैं।