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.