मेरे पास कुछ निर्देशिकाएं और उप-निर्देशिकाएं हैं जिनमें फ़ाइल एक्सटेंशन नहीं है। मैं इन निर्देशिकाओं में निहित सभी फ़ाइलों को .jpg
जोड़ना चाहता हूं। मैंने फ़ाइल एक्सटेंशन को बदलने के लिए बैश स्क्रिप्ट देखी हैं लेकिन केवल एक जोड़ने के लिए नहीं। इसे रिकर्सिव करने की भी आवश्यकता है, क्या कोई मदद कर सकता है?सभी फ़ाइलों में फ़ाइल एक्सटेंशन को दोबारा जोड़ें
उत्तर
एक स्पष्ट पाश बिना वैकल्पिक आदेश (man find
):
find . -type f -exec mv '{}' '{}'.jpg \;
स्पष्टीकरण: इस रिकर्सिवली सभी फाइलों को पाता है (-type f
) वर्तमान निर्देशिका (.
) से शुरू और से प्रत्येक के लिए कदम आदेश (mv
) लागू होता है उन्हें। {}
के आसपास उद्धरण भी नोट करें, ताकि रिक्त स्थान (और यहां तक कि न्यूलाइन ...) के साथ फ़ाइल नाम ठीक तरह से संभाले जा सकें।
इस तरह,
for f in $(find . -type f); do mv $f ${f}.jpg; done
मैं उम्मीद नहीं कर रहा हूँ आप अंतरिक्ष अलग फ़ाइल नाम है,
आप करते हैं, नाम एक सा कार्य किया जाना आवश्यक होगा।
आप कुछ अन्य निर्देशिका से आदेश पर अमल करना चाहते हैं,
आप find /target/directory
साथ find .
बदल सकते हैं।
यह एक याद आ रही है jpg को आप png बदलना चाहते हैं के लिए 'करें' और यदि फ़ाइल नाम में रिक्त स्थान हैं, तो फ़ाइल नाम को उद्धृत करना बेहतर हो सकता है: $ में f के लिए (ढूंढें। -type f); एमवी "$ एफ" "$ {एफ} .jpg" करें; – DrAl
किया और संभवतः मैं इसे शीर्ष स्तर की निर्देशिका में से चलाऊंगा? – robjmills
@seengee: हाँ। ध्यान दें कि यह आदेश '-type' में डैश को भी याद करता है। – Stephan202
इस विस्तार के बिना फ़ाइलों को खोजने के लिए और जोड़ देगा अपने
find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
+1 क्योंकि यह उन फ़ाइलों को छोड़ देता है जिनके पास पहले से ही एक एक्सटेंशन है। – Stephan202
यह निश्चित रूप से वांछित परिणाम 99% समय प्रदान करेगा। +1 – les
rename
यकीन है कि यह एक्सटेंशन के बिना फ़ाइलों का नाम कर सकते हैं (मैं विंडोज 7 पर अभी हूँ)
यह कर सकता है, लेकिन यह निर्देशिकाओं का नाम भी बदल देगा, और उप-निर्देशिकाओं में कम से कम काम करने के लिए इसे बताने का कोई तरीका नहीं है (कम से कम मेरे पास उबंटू पर संस्करण के साथ)। – mirod
मुझे कम से कम दो अलग-अलग आदेशों को पता है जिन्हें 'नाम बदलें' कहा जाता है, एक सी प्रोग्राम जो कि यूनिवर्सिटी-लिनक्स-एनजी में शामिल है और हमारे विश्वविद्यालय की डेबियन मशीनों पर एक पर्ल प्रोग्राम (वॉल वॉल द्वारा) शामिल है। असल में, दोनों में से कोई भी रिकर्सन नहीं करता है। – Boldewyn
नहीं .jpg यह थोड़ा देर हो चुकी है, लेकिन मैंने सोचा कि मैं अब तक बेहतर समाधान (हालांकि शायद कम पठनीय) जोड़ सकता हूं:
find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'
find | xargs
पैटर्न का उपयोग आमतौर पर अधिक कुशल निष्पादन में होता है, क्योंकि आपको प्रत्येक फ़ाइल के लिए एक नई प्रक्रिया को फोर्क नहीं करना पड़ता है।
ध्यान दें कि पारंपरिक नाम के बजाय डेबियन-स्वाद वाले डिस्ट्रोज़ (उर्फ उन्माद) में पाए गए नाम के संस्करण की आवश्यकता है। यह सिर्फ एक छोटी सी पर्ची लिपि है, इसलिए, किसी भी सिस्टम पर उपरोक्त आदेश का उपयोग करना इतना आसान होगा।
विंडोज बुनियादी में कोई विस्तार के साथ सभी फ़ाइलों का नाम बदलने आप ren * *.jpg
कर सकते हैं कोई विस्तार के रूप में फ़ाइल के बाद से, बस * उपयोग करें, या उपयोग ren *.png *.jpg
- 1. वर्तमान निर्देशिका में सभी फ़ाइलों को दोबारा विस्तारित करता है?
- 2. सभी फ़ाइलों में "# कोडिंग: utf-8" जोड़ें
- 3. निर्देशिका में सभी फ़ाइलों के लिए फ़ाइल एक्सटेंशन बदलना ओएसएक्स
- 4. पायथन में फ़ाइलों को दोबारा खोलें?
- 5. फ़ाइलों को बनाने, दोबारा निर्देशिका बनाने
- 6. ग्रहण में टूलबार में बटन जोड़ें/दोबारा जोड़ें?
- 7. लिनक्स निष्पादन योग्य फ़ाइलों को .gitignore में कैसे जोड़ें?
- 8. मैं सभी * .js फ़ाइल को लिनक्स में दोबारा निर्देशिका में कैसे ढूंढ सकता हूं?
- 9. फ़ाइलों को
- 10. यादृच्छिक फ़ाइल जेनरेटर (दोबारा!)
- 11. एक फाइल को छोड़कर सभी फ़ाइलों को एक प्रतिबद्ध में जोड़ें?
- 12. विंडोज बैच फ़ाइल - उपनिर्देशिका में सभी फ़ाइलों को सम्मिलित करें
- 13. प्लेलिस्ट में एकाधिक फ़ाइलों को कैसे जोड़ें
- 14. emacs में क्लोजर फ़ाइलों को दोबारा लोड करें
- 15. निर्देशिका में सभी पायथन फ़ाइलों को चलाएं
- 16. सभी फ़ाइलों और निर्देशिकाओं को दोबारा सूचीबद्ध करने के लिए कैसे करें
- 17. सभी .html एक्सटेंशन को .php
- 18. एजीट सभी फ़ाइलों को
- 19. किसी निर्देशिका से सभी फ़ाइल एक्सटेंशन को रिकर्सिवली कैसे ढूंढें?
- 20. एएसपी.नेट सभी फ़ाइलों को ज़िप
- 21. setup.py में हेडर फ़ाइलों को कैसे जोड़ें ताकि एक्सटेंशन बनाने के दौरान निर्भरताएं देखी जा सकें?
- 22. निर्देशिका में फ़ाइलों को हटाने का सबसे तेज़ तरीका क्या है? (विशिष्ट फ़ाइल एक्सटेंशन को छोड़कर)
- 23. टैग फ़ाइल को दोबारा लोड करें Vim
- 24. Emacs में फ़ाइल एक्सटेंशन हुक
- 25. विंडोज़ .bat फ़ाइल कैसे प्रकार की सभी फाइलों को दोबारा सूचीबद्ध करने के लिए * .mp3
- 26. बैश में सभी मानव पठनीय फ़ाइलों को कैसे गिनें?
- 27. फ़ाइल एक्सटेंशन
- 28. बच्चे को दिए गए सभी पूर्वजों को दोबारा ढूंढें
- 29. menupopup mozilla एक्सटेंशन developmet में सबमेनू जोड़ें?
- 30. बैच फ़ाइल - दूसरा फ़ाइल एक्सटेंशन निकालें
विशेष रूप से, यह एक बेहतर काम करता है यदि निर्देशिका संरचना में बड़ी संख्या में फाइलें हैं (जिससे बैश को फ़ाइलों की सूची की लंबाई के बारे में परेशान होने का कारण बनता है)। – DrAl
@ एएल, यदि आप फाइलों की सूची में पुनरावृत्ति करने के लिए 'for' लूप अपसेटिंग बैश का संदर्भ लेते हैं, तो यह सही नहीं है। 'लूप' के लिए बैश प्रत्येक 'mv' कमांड को सक्रिय रूप से जारी करता है। – nik
प्रश्न: क्या 'ढूंढें 'पहले फाइलों की सूची सेट अप करता है * इससे पहले * यह' -exec' कथन निष्पादित करता है? मुझे ऐसा लगता है, लेकिन असीमित loops कोडिंग से पहले इस बिंदु को स्पष्ट करना चाहते हैं। – Boldewyn