Co to jest Windowsowy odpowiednik uniksowego polecenia cat?


201

Chcę robić dokładnie to, co robi uniksowy „cat”, ale na moim komputerze. Czy istnieje proste równoważne polecenie dla wiersza poleceń systemu Windows?

W szczególności chcę utworzyć plik ze wszystkich plików danego typu w folderze

W Uniksie:

cat *fna >all_fna_files.fna

(który łączy wszystkie pliki tekstowe „.fna” w jeden duży plik tekstowy)


Żadna z tych sugestii nie może zaakceptować przekierowania STDIN.
będzie

2
PowerShell:cat file.txt
Kolob Canyon

Odpowiedzi:


251

type

To działa w poprzek command.com, cmdi PowerShell (choć w tym ostatnim jest aliasem Get-Content, taki jest cat, więc można użyć albo). Z artykułu w Wikipedii (moje podkreślenie):

W informatyce typ jest poleceniem w różnych VMS. AmigaDOS, CP / M, DOS, OS / 2 i Microsoft Windows interpretery wiersza poleceń (powłoki), takie jak COMMAND.COM, cmd.exe, 4DOS / 4NT i Windows PowerShell. Służy do wyświetlania zawartości określonych plików. Jest to analogiczne do komendy cat systemu 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
Dobra odpowiedź informacyjna, więc +1. Żałuję, że nie mogę dać Microsoftowi -1 za całkowicie niejednoznaczną nazwę polecenia. type filenamesprawia, że ​​myślę, że polecenie powinno zwrócić typ pliku, a nie jego zawartość!
PenguinCoder

28
Kot naprawdę nie wydaje się znacznie lepszy.
David Boike,

9
@davidboike Jest znacznie lepiej, ponieważ w rzeczywistości oznacza i oznacza to, co robi: Program cat jest standardowym narzędziem uniksowym, które łączy i wyświetla pliki. Nazwa jest skrótem catenate, synonimem konkatenatu. Artykuł w Wikipedii Czy możesz powiedzieć to samo o poleceniu MS-DOS type?
PenguinCoder

11
@PenguinCoder Wyjątkiem typenie jest łączenie plików; to tylko typeich zawartość na ekranie. To potokowanie w tym przykładzie faktycznie łączy pliki, a nie typepolecenie.
Andy,


22

Z powłoki poleceń:

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

(Ale wynika to z użycia powłoki shell-Z jako znacznika końca pliku, więc w niektórych przypadkach nie jest to odpowiednie).

W PowerShell:

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

i możesz kontrolować (używając -Encodingparametru) kodowanie pliku (co pozwala na transkodowanie przy użyciu innego kodowania dla odczytu i zapisu).


8
Aliasy PowerShell catdo Get-Contenttoo. Został zaprojektowany tak, aby akceptować wiele podstawowych poleceń Linuksa bez większych modyfikacji, jeśli w ogóle.
Bob

1
Bob, chyba że w grę wchodzą przełączniki i opcje.
Joey,

@ Richard: Copy / ba + b + c output.txt nie sprawdza Ctrl-Z. Oba warianty skopiują cały plik, jeśli w pliku nie ma Ctrl-Z.
Tonny

2
Pamiętaj, że możesz także dołączyć symbole wieloznaczne, sposób działania symboli wieloznacznych w systemie Windows oznacza, że ​​nie zostaniesz pomieszany z listą rozszerzeń niezawierającą +, więc copy [/b] *.fna all_fna_files.fna..
Random832

jeśli przypomnę sobie stary test, który kiedyś zrobiłem, użycie KOPIUJ z / B do konkatenacji, zignoruje znaczniki CTRL-Z / EOF i poprawnie wykonam konkatenację! ale sądząc po kopii /? być może będziesz musiał zrobić dużo / B, jakby się to wydawało po kopiowaniu, po każdym pliku src i po pliku docelowym ... dziwne.
barlop

1

Właśnie użyłem polecenia cat w DOS (Windows 7 Pro) w następujący sposób i z powodzeniem połączyłem 3 pliki (log1.txt, log2.txt, log3.txt) w jeden plik:

cat log*.txt >> myBigLogFile.txt 

Uwaga: cat log*.txt > myBigLogFile2.txtpodaj również ten sam wynik, ale zastąpi on poprzedni plik.


3
może masz GNU dla Windows lub Cygwin na swojej drodze, lub używasz PowerShell, ponieważ cat nie istnieje na czystym systemie Windows 7. DOS nie jest już rzeczą, ale większość ludzi użyłaby go w odniesieniu do cmd.exe.
Shanteva

1
Windows CMD i MS-DOS to nie to samo . W catcmd i DOS nie ma komendy, tylko catalias w PowerShell
phuclv

możesz także użyć typepoleceniatype *.txt > file.merge
Riz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.