346 votes

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

Je veux faire exactement ce que fait "cat" sous Unix, mais sur mon PC. Y a-t-il une commande équivalente simple 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

(ce qui regroupe tous les fichiers texte ".fna" en un seul gros fichier texte)

0 votes

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

3 votes

Powershell: cat file.txt

0 votes

Double-croisement : stackoverflow.com/q/60244/11683

430voto

ckhan Points 7169

type

Cela fonctionne à travers command.com, cmd, et PowerShell (bien que dans ce dernier ce soit un alias pour Get-Content, tout comme cat, donc vous pourriez utiliser l'un ou l'autre). Depuis l'article Wikipedia (soulignement de ma part) :

En informatique, type est une commande dans divers VMS. AmigaDOS, CP/M, DOS, OS/2 et les interpréteurs de commandes de ligne de commande de Microsoft Windows (shells) tels que COMMAND.COM, cmd.exe, 4DOS/4NT et Windows PowerShell. Elle est utilisée pour afficher le contenu de fichiers spécifiés. Elle 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

15 votes

Bonne réponse informative, donc +1. J'aimerais pouvoir donner à Microsoft un -1 pour le nom de commande totalement ambigu. type nomfichier me fait penser que la commande devrait renvoyer le type de fichier, pas le contenu du fichier!

51 votes

Le chat ne semble pas vraiment aller beaucoup mieux.

1 votes

@PenguinCoder Pourquoi blâmez-vous MS ? Il me semble qu'ils ont simplement suivi une convention existante de VMS.

32voto

codemac Points 689

De l'invite de commande :

copier a.txt + b.txt + c.txt output.txt

(Mais cela suit l'utilisation par les invite de commande du contrôle-Z comme un marqueur de fin de fichier, donc pas adapté dans certains cas).

Dans PowerShell :

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

et vous pouvez contrôler (en utilisant le paramètre -Encoding) le codage du fichier (ce qui permet de transcoder en utilisant un codage différent pour la lecture et l'écriture).

8 votes

Les alias PowerShell cat est également associé à Get-Content. Il est conçu pour accepter de nombreuses commandes de base Linux sans nécessiter beaucoup, voire aucune, modification.

1 votes

Bob, sauf s'il y a des commutateurs et des options impliqués.

0 votes

@Richard: La commande /b a + b + c output.txt ne vérifie pas la présence du Ctrl-Z. Les deux variantes copieront l'intégralité du fichier s'il n'y a PAS de ctrl-Z dans le fichier.

3voto

Heidi Points 47

Je viens d'utiliser la commande cat dans DOS (Windows 7 Pro) de la manière suivante et j'ai fusionné 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.txt fournit également le même résultat, mais il écrasera le fichier précédent.

10 votes

Peut-être avez-vous GNU pour Windows, ou Cygwin dans votre chemin, ou utilisez powershell parce que cat n'existe pas sur un système Windows 7 propre. DOS n'est plus d'actualité, mais la plupart des gens l'utiliseraient pour faire référence à cmd.exe.

1 votes

Windows CMD et MS-DOS ne sont pas la même chose. Il n'y a pas de commande cat dans cmd et DOS, seulement un alias cat dans powershell.

0 votes

Vous pouvez également utiliser la commande type type *.txt > file.merge

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X