Quel est l'équivalent Windows de la commande Unix cat?

203

Je veux faire exactement ce que fait unix "cat", mais sur mon PC. Existe-t-il une simple commande équivalente pour la ligne de commande Windows?

Plus précisément, je veux créer un fichier à partir de tous les fichiers d'un type donné dans un dossier

Sous Unix:

cat *fna >all_fna_files.fna

(qui réunit tous les fichiers texte ".fna" en un gros fichier texte)

Kirt
la source
Aucune de ces suggestions ne peut accepter une redirection de STDIN.
sera
2
Powershell:cat file.txt
Kolob Canyon
Reproduction croisée

Réponses:

253

type

Cela fonctionne de part et d'autre command.com, cmdet PowerShell (bien que dans ce dernier ce soit un alias Get-Content, il en est de même cat, vous pouvez donc utiliser l'un ou l'autre). De l'article de Wikipédia (c'est moi qui souligne):

En informatique, le type est une commande dans divers VMS. Les interpréteurs de ligne de commande AmigaDOS, CP / M, DOS, OS / 2 et Microsoft Windows (shells) tels que COMMAND.COM, cmd.exe, 4DOS / 4NT et Windows PowerShell. Il est utilisé pour afficher le contenu des fichiers spécifiés. C'est analogue à la commande Unix cat.

C:\>echo hi > a.txt
C:\>echo bye > b.txt
C:\>type a.txt b.txt > c.txt
C:\>type c.txt
hi
bye
ckhan
la source
6
Bonne réponse informative, donc +1. Si seulement je pouvais donner à Microsoft un -1 mais pour le nom de commande totalement ambigu. type filenameme fait penser que la commande doit renvoyer le type de fichier, pas le contenu du fichier!
PenguinCoder
28
Le chat ne semble pas vraiment mieux.
David Boike
9
@davidboike C'est beaucoup mieux parce que ça veut vraiment dire ce que ça fait: Le programme cat est un utilitaire Unix standard qui concatène et liste les fichiers. Le nom est une abréviation de catenate, synonyme de concatenate. Article Wikipedia Pouvez-vous dire la même chose pour la typecommande MS-DOS ?
PenguinCoder
11
@PenguinCoder Except typene concatène pas de fichiers; c'est juste typeleur contenu à l'écran. Dans l'exemple, c'est la tuyauterie qui combine les fichiers, pas la typecommande.
Andy
22

Depuis le shell de commande:

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

(Mais cela suit la commande shell utilise control-Z comme marqueur de fin de fichier, donc non approprié dans certains cas).

Dans PowerShell:

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

et vous pouvez contrôler (en utilisant un -Encodingparamètre) le codage du fichier (qui permet le transcodage en utilisant un codage différent pour la lecture et l’écriture).

Richard
la source
8
PowerShell alias catà Get-Contentaussi. Il est conçu pour accepter de nombreuses commandes Linux de base sans grande modification, voire aucune.
Bob
1
Bob, sauf si des commutateurs et des options sont impliqués.
Joey
@Richard: Copier / ba + b + c output.txt ne vérifie pas pour Ctrl-Z. Les deux variantes copieront le fichier entier s'il n'y a PAS de ctrl-Z dans le fichier.
Tonny
2
Notez que vous pouvez également inclure des caractères génériques. La manière dont ils fonctionnent dans Windows signifie que vous ne serez pas dérangé par la liste d'extension ne contenant pas +, donc copy [/b] *.fna all_fna_files.fna..
Random832
Si je me souviens d'un vieux test que j'ai fait une fois, en utilisant COPY avec / B pour concaténer, j'ignorerai les marqueurs CTRL-Z / EOF et ferai la concaténation correctement! mais à en juger par copie /? vous aurez peut-être besoin de faire beaucoup de / B comme cela semble peut-être après la copie, après chaque fichier src et après le fichier dest .. étrange.
barlop
1

Je viens d'utiliser la commande cat sous DOS (Windows 7 Pro) de la manière suivante et de fusionner avec succès 3 fichiers (log1.txt, log2.txt, log3.txt) dans un seul fichier:

cat log*.txt >> myBigLogFile.txt 

Remarque: cat log*.txt > myBigLogFile2.txtindiquez également le même résultat, mais le fichier précédent sera remplacé.

Heidi
la source
3
Peut-être avez-vous GNU pour Windows, ou Cygwin sur votre chemin, ou utilisez-vous PowerShell car cat n'existe pas sur un système Windows 7 propre. DOS n'est plus une chose, mais la plupart des gens l'utilisent pour faire référence à cmd.exe.
Shanteva
1
Windows CMD et MS-DOS ne sont pas la même chose . Il n'y a pas de catcommande à la fois dans cmd et DOS, seulement un catalias dans powershell
phuclv
vous pouvez également utiliser la typecommandetype *.txt > file.merge
Riz