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)


Aucune de ces suggestions ne peut accepter une redirection de STDIN.
— sera

2
Powershell:cat file.txt
— Kolob Canyon

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

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).


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é.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.