एक प्रोग्रामिंग निर्देशिका बैकअप


1

मेरे पास कई संकलित सी कार्यक्रमों के साथ एक निर्देशिका है जो मैं बैकअप लेना चाहूंगा। अभी उनका नाम रखा गया है program.outलेकिन मैं इसे सिर्फ बदलना चाहूंगा program।

क्या अब भी इन को बाहर करना संभव होगा? इसके अलावा, मैं किस तरह के रेगेक्स का इस्तेमाल करूंगा, ताकि जल्दी से उन सभी का नाम बदल सकूं?


यदि आप केवल कुछ फ़ाइलों का नाम बदलने का प्रयास कर रहे हैं, तो आपके द्वारा प्रासंगिक स्क्रिप्ट को कैसे पोस्ट किया गया है? मुझे program.outस्क्रिप्ट में वैसे भी कोई उल्लेख नहीं दिख रहा है ।
— jw013

जवाबों:


0

अपने कोड का उपयोग करने के लिए git या अन्य संस्करण नियंत्रण सॉफ़्टवेयर का उपयोग करें। इंटरनेट पर आपको कुछ नाम रखने के लिए बहुत सारे विकल्प मिले हैं: गिथब, बिटबकेट।

Git में आपको फ़ाइल .gitignore मिली है यदि आप वहां जोड़ते हैं *। तो इसे रिपॉजिटरी में ट्रांसफर नहीं किया जाएगा


मैं अपने सभी "बच्चे के पहले सी" कोड को इंटरनेट पर डालने से शर्मिंदा महसूस करता हूं।
— user341814

गिटलैब और बिटबकेट को निजी रेपो मिला। दूसरी ओर यदि आप इसे उस स्थान पर रखते हैं जहाँ जनता की नज़र इसे देख सकती है तो आपका कोड बेहतर हो जाएगा क्योंकि आप बेहतर कोडर बनेंगे। सौभाग्य! :)
— 3h4x

1

मैं आपके पहले प्रश्न पर बहुत स्पष्ट नहीं हूं। आप नाम बदलना चाहते हैं program.outके लिए programतो बस चलाने:

mv program{.out,}

दूसरे प्रश्न के लिए, मुझे लगता है कि मैं /etcएक प्रत्यय के साथ फाइलों की एक सूची प्राप्त करना चाहता था :

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

आप उपरोक्त को आवश्यकतानुसार समायोजित कर सकते हैं।

  • \. एक शाब्दिक अवधि से मेल खाता है।
  • . अवधि के बाद किसी भी चरित्र से मेल खाता है।
  • +का कहना है कि कम से कम एक चरित्र को प्रारंभिक अवधि का पालन करना चाहिए। तो इस से मेल खाएगा test.c, लेकिन नहीं test.आप मेल करना चाहते हैं test.और साथ ही, तो बदल +एक करने के लिए *।

0

यदि आप एक शेल के रूप में बैश का उपयोग कर रहे हैं, तो यह शेल पाइपलाइन के लिए एक सरल कार्य है।

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls निर्देशिका में फ़ाइलों की एक सूची तैयार करता है।

grep '\.out$' उन फ़ाइलनामों को निकालता है जो समाप्त हो जाते हैं और शेष को छोड़ देते हैं।

while read file एक समय में फ़ाइल नाम पढ़ता है।

echo mv "$file" "${file%.*}"प्रदर्शित करता है, लेकिन एक एमवी कमांड नहीं चलाता है जो प्रत्येक फ़ाइल को इसके विस्तार के बिना एक संस्करण में बदल देगा। ${file%.*}व्यापार एक फाइल एक्सटेंशन बंद अलग करना के लिए बैश वाक्य रचना है। जब आप संतुष्ट हो जाते हैं कि पाइपलाइन वही करेगी जो आप चाहते थे यदि वह वास्तविक के लिए चलाई जाती है, तो echoभाग को हटा दें और इसे वास्तविक के लिए चलने दें।

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

लेकिन एक स्क्रिप्ट बनाने के बाद मैं इन फ़ाइलों को अनदेखा कैसे कर सकता हूं, क्योंकि उनके पास .out एक्सटेंशन नहीं है?
— user341814

testकमांड का उपयोग करें । test -xसफल होता है अगर किसी फ़ाइल की अनुमति के पास निष्पादन बिट सेट है।
— काइल जोन्स

यह थोड़ा कठिन लगता है ... क्या आप शायद ऐसा लिखने में मेरी मदद कर सकते हैं? इसलिए मेरे पास यह परीक्षण है कि क्या यह निष्पादन योग्य है ... और यदि यह नहीं है, तो इसे कॉपी करें।
— user341814

क्या आप मेरी मदद कर सकते हैं? मैंने सोचा था कि मैं इसे तैयार कर रहा हूं, लेकिन अब यह काम नहीं कर रहा है।
— user341814
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.