เทียบเท่ากับ Windows ของคำสั่ง Unix cat คืออะไร?


203

ฉันต้องการทำสิ่งที่ unix "cat" ทำ แต่ในพีซีของฉัน มีคำสั่งที่เทียบเท่าง่ายสำหรับบรรทัดคำสั่ง Windows หรือไม่

โดยเฉพาะฉันต้องการสร้างไฟล์จากไฟล์ทุกประเภทที่กำหนดในโฟลเดอร์

ใน Unix:

cat *fna >all_fna_files.fna

(ซึ่งรวมไฟล์ข้อความ ".fna" ทั้งหมดไว้ในไฟล์ข้อความขนาดใหญ่หนึ่งไฟล์)


คำแนะนำเหล่านี้ไม่สามารถยอมรับการเปลี่ยนเส้นทางของ STDIN
จะ

2
Powershell:cat file.txt
Kolob Canyon

ข้ามซ้ำ: stackoverflow.com/q/60244/11683
GSerg

คำตอบ:


253

type

มันทำงานข้ามcommand.com, cmdและ PowerShell (แม้ว่าในภายหลังจะเป็นนามแฝงสำหรับGet-Contentดังนั้นcatเพื่อให้คุณสามารถใช้อย่างใดอย่างหนึ่ง) จากบทความของ Wikipedia (ให้ความสำคัญกับเหมือง):

ในการคำนวณให้พิมพ์คำสั่งใน VMS ต่างๆ AmigaDOS, CP / M, DOS, OS / 2 และ Microsoft Windows command line interpreters (shells) เช่น COMMAND.COM, cmd.exe, 4DOS / 4NT และ Windows PowerShell มันถูกใช้เพื่อแสดงเนื้อหาของไฟล์ที่ระบุ มันคล้ายกับคำสั่งแมว Unix

C:\>echo hi > a.txt
C:\>echo bye > b.txt
C:\>type a.txt b.txt > c.txt
C:\>type c.txt
hi
bye

6
ข้อมูลคำตอบที่ดีดังนั้น +1 หวังว่าฉันจะให้ Microsoft -1 สำหรับชื่อคำสั่งที่คลุมเครือที่สุด type filenameทำให้ฉันคิดว่าคำสั่งควรกลับประเภทของไฟล์ไม่ใช่เนื้อหาของไฟล์!
PenguinCoder

28
แมวดูไม่ค่อยดีเท่าไหร่
David Boike

9
@davidboike มันดีกว่ามากเพราะมันมีความหมายและหมายถึงสิ่งที่มันทำ: โปรแกรม cat เป็นยูทิลิตี้ Unix มาตรฐานที่เชื่อมต่อและแสดงรายการไฟล์ ชื่อนี้เป็นตัวย่อของ catenate คำพ้องความหมายของ concatenate บทความ Wikipediaคุณสามารถพูดเหมือนกันสำหรับtypeคำสั่งMS-DOS ได้หรือไม่?
PenguinCoder

11
@PenguinCoder ยกเว้นtypeไม่เชื่อมไฟล์เข้าด้วยกัน; มันเป็นเพียงtypeเนื้อหาของพวกเขาไปที่หน้าจอ มันเป็น piping ในตัวอย่างที่รวมไฟล์จริง ๆ แล้วไม่ใช่typeคำสั่ง
Andy


22

จากเชลล์คำสั่ง:

copy a.txt + b.txt + c.txt output.txt

(แต่ที่ตามหลังคำสั่ง shells ใช้ control-Z เป็นจุดสิ้นสุดไฟล์มาร์กเกอร์ดังนั้นจึงไม่เหมาะในบางกรณี)

ใน PowerShell:

get-content a.txt,b.txt,c.txt | out-file output.txt

และคุณสามารถควบคุม (โดยใช้-Encodingพารามิเตอร์) การเข้ารหัสไฟล์ (ซึ่งอนุญาตให้แปลงรหัสโดยใช้การเข้ารหัสที่แตกต่างกันสำหรับการอ่านและเขียน)


8
PowerShell นามแฝงcatที่จะGet-Contentมากเกินไป มันออกแบบมาเพื่อยอมรับคำสั่ง Linux พื้นฐานมากมายโดยไม่มีการดัดแปลงใด ๆ
Bob

1
Bob ยกเว้นถ้าสวิตช์และตัวเลือกเกี่ยวข้อง
Joey

@Richard: คัดลอก / ba + b + c output.txt ไม่ได้ตรวจสอบใน Ctrl-Z ตัวแปรทั้งสองจะคัดลอกไฟล์ทั้งหมดหากไม่มี NO ctrl-Z ในไฟล์
Tonny

2
โปรดทราบว่าคุณสามารถรวมไวด์การ์ดด้วยเช่นกันวิธีการทำงานของไวด์การ์ดใน Windows หมายความว่าคุณจะไม่สับสนโดยรายการส่วนขยายที่ไม่มี a +ดังนั้นcopy [/b] *.fna all_fna_files.fna..
Random832

ถ้าฉันจำได้จากการทดสอบครั้งเก่าที่ฉันเคยทำโดยใช้ COPY กับ / B เพื่อต่อกันจะละเว้นเครื่องหมาย CTRL-Z / EOF และจะทำการต่อข้อมูลอย่างถูกต้อง! แต่ตัดสินโดยการคัดลอก /? คุณอาจต้องทำมาก / B ดูเหมือนว่าอาจจะหลังจากคัดลอกหลังจากแต่ละไฟล์ src และหลังจากไฟล์ dest .. แปลก
barlop

1

ฉันเพิ่งใช้คำสั่ง cat ใน DOS (Windows 7 Pro) ในลักษณะดังต่อไปนี้และประสบความสำเร็จในการรวม 3 ไฟล์ (log1.txt, log2.txt, log3.txt) เป็นไฟล์เดียว:

cat log*.txt >> myBigLogFile.txt 

หมายเหตุ: cat log*.txt > myBigLogFile2.txtให้ผลลัพธ์เดียวกัน แต่จะแทนที่ไฟล์ก่อนหน้า


3
บางทีคุณอาจมี GNU สำหรับ Windows หรือ Cygwin ในเส้นทางของคุณหรือใช้ PowerShell เพราะ cat ไม่มีอยู่ในระบบ Windows 7 ที่สะอาด DOS ไม่มีอีกต่อไป แต่คนส่วนใหญ่จะใช้เพื่ออ้างถึง cmd.exe
Shanteva

1
หน้าต่าง CMD และ MS-DOS ไม่ได้ในสิ่งเดียวกัน ไม่มีเป็นcatคำสั่งทั้งใน cmd และ DOS เพียงcatนามแฝงใน PowerShell
phuclv

คุณสามารถใช้typeคำสั่งtype *.txt > file.merge
Riz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.