ใช้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ดูสิ่งที่กำลังจับคู่