फ़ाइल या निर्देशिका का नाम बदलकर या perl द्वारा linux में


0

मुझे सभी निर्देशिकाओं और फ़ाइलों और फ़ाइल / निर्देशिका को स्कैन करने की आवश्यकता है और मेजबान का नाम बदलने के लिए - फ़ाइल नाम या निर्देशिका नाम में "node_STAR" के साथ "नोड 1"

क्या किसी को यह पता चल सकता है कि ऐसा कैसे किया जाए कि शायद वह मिल जाए या पर्ल (मेरे शेल स्क्रिप्ट में इसे सम्मिलित करने के लिए) किसी भी तरह से सभी लिनक्स निर्देशिकाओं और फ़ाइलों को स्कैन करने के बावजूद बहुत तेज़ होना चाहिए

उदाहरण पर फ़ाइल

     /var/tmp/node1 will be /var/tmp/node_STAR file

उदाहरण पर - निर्देशिका

     /etc/my_hosts/node1  will be /etc/my_hosts/node_STAR dir

जवाबों:



1

यदि प्रभावित फ़ाइलों की संख्या बड़ी है, तो खोज के बैक-कॉल के माध्यम से फ़ाइलनाम पास करने के बाद से, xgs का उपयोग करना बेहतर है:

find . -name '*node1*'  -print0 | xargs -0 rename 's/node1/node_STAR/'

यह कमांड node1मौजूदा डायरेक्टरी ( .) में शुरू होने वाली स्ट्रिंग वाली सभी फाइल और डायरेक्टरी नामों को बदलेगी । यदि आप केवल सटीक फ़ाइल नाम बदलना चाहते हैं, तो खोज पैरामीटर से तारांकन हटाएं, और इसे फ़ाइलों या निर्देशिकाओं तक सीमित करने के लिए, पैरामीटर type -fया type -dक्रमशः का उपयोग करें ।


बैकटेल कॉल का उपयोग करना भी विफल हो जाएगा यदि फ़ाइलनाम में रिक्त स्थान शामिल हैं, लेकिन इसलिए आपके उत्तर में दिखाया गया कमांड होगा। उपयोगfind ... -print0 | xargs -0 ...
डेनिस विलियमसन

हाय डेनिस - यह कैसे अंतरिक्ष के साथ फाइल किया जा सकता है?
येल

@ डेनिस: हाँ, आप सही हैं। उसके अनुसार संपादन किया। धन्यवाद।
स्वेन

@ येल: यह आसान है: बस दर्ज करें touch 'myfile with space'और आपके पास इसमें दो स्थानों के साथ एक फ़ाइल नाम है। दुर्भाग्य से, यह फ़ाइल नाम के लिए एक पूरी तरह से कानूनी चरित्र है। दुर्भाग्य से, क्योंकि यह रास्ता भी कई समस्याओं को जन्म देता है, तो आप सावधान नहीं हो, के रूप में मैं अपने आप को प्रदर्शन किया :(
स्वेन

1
@ येल: लिनक्स और यूनिक्स में, अशक्त (0x00) और स्लैश (/) को छोड़कर कोई भी वर्ण फ़ाइल नाम में हो सकता है, जिसमें स्पेस, टैब, न्यूलाइन, गाड़ी वापसी और गैर-प्रिंटिंग कंट्रोल वर्ण शामिल हैं।
डेनिस विलियम्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.