ใช้cat
กับการเปลี่ยนเส้นทางผลลัพธ์ ไวยากรณ์: cat file [file] [[file] ...] > joined-file
.
ตัวอย่างที่มีเพียงสองไฟล์ (คุณสามารถมีได้อีกมาก):
$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text
ในกรณีที่คุณมี "เอกสารจำนวนมาก" ใช้ประโยชน์จากเปลือกกลม (รูปแบบ):
cat input-files-dir/* > joined-file
สิ่งนี้จะรวมไฟล์ทั้งหมดในไดเรกทอรีนั้นเข้ากับไดเรกทอรีปัจจุบัน (ป้องกันไม่ให้ตรงกับไฟล์ที่ส่งออกเอง) มันเป็นอิสระโดยสิ้นเชิงกับการใช้cat
และการเปลี่ยนเส้นทางการส่งออก - cat
เป็นเพียงทุบตีให้ไฟล์ทั้งหมดที่เป็นข้อโต้แย้งที่จะ
ประเภทไฟล์
มันจะทำการรวมไฟล์เข้าด้วยกันเช่นเดียวกับที่คุณทำกับกระดาษและเทป ไม่สนใจรูปแบบไฟล์จริงที่สามารถจัดการได้ มันจะใช้งานได้กับไฟล์ข้อความ แต่ไม่ใช่สำหรับ PDF, ODT และอื่น ๆ มันจะรวมเข้าด้วยกัน แต่ไม่ใช่ PDF / ODT ที่ถูกต้องอีกต่อไป
ลำดับการเข้าร่วม
ในขณะที่phoibos ชี้ให้เห็นว่าการเปล่งประกายของเชลล์จะทำให้ชื่อไฟล์เรียงตามตัวอักษร นี่คือการที่ Bash และ Shell globbing ทำงาน
ภาคผนวกเกี่ยวกับinput file is output file
ข้อผิดพลาด
เมื่อรูปแบบของไฟล์อินพุตตรงกับไฟล์เดียวกันกับที่เป็นเอาต์พุตสิ่งนี้จะทำให้เกิดข้อผิดพลาด มันเป็นคุณสมบัติด้านความปลอดภัย ตัวอย่าง: การcat *.txt > out.txt
รันครั้งที่สองจะทำให้เกิดสิ่งนี้
คุณสามารถทำอะไรได้บ้าง:
- เลือกรูปแบบที่เฉพาะเจาะจงมากขึ้นเพื่อจับคู่ไฟล์อินพุตที่แท้จริงไม่ตรงกับชื่อเอาต์พุต ตัวอย่าง: รูปแบบไฟล์อินพุต
*.txt
พร้อมไฟล์เอาต์พุตoutput.out
จะไม่ชนกัน
- ทำงานในไดเรกทอรีต่าง ๆ ในตัวอย่างข้างต้นฉันใช้
input-files-dir
ไดเรกทอรีแยกเพื่อวางไฟล์ทั้งหมดและส่งออกไปยังไดเรกทอรีการทำงานปัจจุบัน สิ่งนี้ทำให้ไม่สามารถรับข้อผิดพลาดนี้ได้
ls
เพียงแค่รายการการแข่งขัน เช่นls *.txt
ดูสิ่งที่กำลังจับคู่