สำรองไดเร็กทอรีการเขียนโปรแกรม


1

ฉันมีไดเรกทอรีที่มีโปรแกรม C ที่คอมไพล์มากมายที่ฉันต้องการสำรองข้อมูล ตอนนี้พวกเขามีชื่อ program.out แต่ฉันต้องการเปลี่ยนสิ่งนี้เป็นเพียง program.

จะเป็นไปได้ไหมที่จะไม่รวมสิ่งเหล่านี้ นอกจากนี้ regex ประเภทใดที่ฉันจะใช้เพื่อเปลี่ยนชื่อพวกเขาทั้งหมดอย่างรวดเร็ว


หากคุณเพียงแค่พยายามเปลี่ยนชื่อไฟล์บางไฟล์สคริปต์ที่คุณโพสต์มีความเกี่ยวข้องอย่างไร ฉันไม่เห็นพูดถึง program.out ในสคริปต์ต่อไป
jw013

คำตอบ:


0

สำหรับการสำรองข้อมูลรหัสของคุณใช้ git หรือซอฟต์แวร์ควบคุมเวอร์ชันอื่น ๆ บนอินเทอร์เน็ตคุณมีตัวเลือกมากมายที่จะบอกชื่อบางอย่าง: github, bitbucket

ใน git คุณได้รับไฟล์. gignignore ถ้าคุณเพิ่มที่นั่น *. จากนั้นมันจะไม่ถูกถ่ายโอนไปยังพื้นที่เก็บข้อมูล


ฉันรู้สึกอายที่จะใส่รหัส "ทารกแรกสุดของทารก" ทั้งหมดของฉันบนอินเทอร์เน็ต
user341814

Gitlab และ bitbucket มี repos ส่วนตัว ในทางกลับกันถ้าคุณวางไว้ในจุดที่สายตาของสาธารณชนมองเห็นมันรหัสของคุณจะดีขึ้นเพราะคุณมีแนวโน้มที่จะเป็น coder ที่ดีขึ้น โชคดี! :)
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

หากคุณใช้ bash เป็นเชลล์นี่เป็นภารกิจง่าย ๆ สำหรับไปป์ไลน์ shell

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

ls สร้างรายการไฟล์ในไดเรกทอรี

grep '\.out$' แยกชื่อไฟล์ที่ลงท้ายด้วย. out และละทิ้งส่วนที่เหลือ

while read file อ่านชื่อไฟล์ทีละครั้ง

echo mv "$file" "${file%.*}" แสดง แต่ไม่ได้รันคำสั่ง mv ที่จะเปลี่ยนชื่อแต่ละไฟล์เป็นเวอร์ชันที่ไม่มีส่วนขยาย ${file%.*} business คือ bash syntax สำหรับดึงส่วนขยายของไฟล์ออก เมื่อคุณพอใจที่ไปป์ไลน์จะทำในสิ่งที่คุณต้องการหากมีการใช้งานจริงให้ลบ echo ส่วนหนึ่งและปล่อยให้มันทำงานจริง

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

แต่ฉันจะทำให้สคริปต์ละเว้นไฟล์เหล่านี้ได้อย่างไรเมื่อไม่มีนามสกุล. out
user341814

ใช้ test คำสั่ง test -x สำเร็จหากการอนุญาตของไฟล์มีชุดการเรียกใช้บิต
Kyle Jones

ดูเหมือนจะยากสักหน่อย ... คุณช่วยฉันเขียนได้ไหม ดังนั้นฉันจึงมีการทดสอบว่ามันจะปฏิบัติการ ... และถ้ามันไม่ได้คัดลอก
user341814

คุณช่วยฉันได้ไหม? ฉันคิดว่าฉันมีส่วนสำคัญของมัน แต่ตอนนี้มันไม่ทำงาน
user341814
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.