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


Je veux faire exactement ce que fait unix "cat", mais sur mon PC. Existe-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

Dans Unix:

cat *fna >all_fna_files.fna

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


124
2018-06-10 07:22


origine


Aucune de ces suggestions ne peut accepter une redirection de STDIN. - will
Powershell: cat file.txt - Kolob Canyon


Réponses:


type

Il fonctionne à travers command.com, cmd, et PowerShell (bien que ce soit un alias pour Get-Content, ainsi est cat, donc vous pourriez utiliser soit). Du Article de Wikipedia (emphase la mienne):

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. Il est analogue à la commande de chat 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

161
2018-06-10 07:47



Cat ne semble pas vraiment beaucoup mieux. - David Boike
@DavidBoike Bien que cat soit de con_cat_enate AFAIR. - Mark Hurd
@davidboike C'est beaucoup mieux parce que cela signifie réellement ce que ça fait: Le programme cat est un utilitaire Unix standard qui concatène et répertorie les fichiers. Le nom est une abréviation de caténate, synonyme de concaténation.  Article de Wikipedia Pouvez-vous dire la même chose pour le MS-DOS type commander?? - PenguinCoder
@ PingouinCoder sauf type ne concatène pas les fichiers; c'est juste types leur contenu à l'écran. C'est la tuyauterie dans l'exemple qui combine réellement les fichiers, pas le type commander. - Andy
MS-DOS a probablement hérité TYPE de CP / M par QDOS. La commande TYPE affiche le contenu du fichier source ASCII ufn sur le disque actuellement connecté sur le périphérique de la console. - Michael Kjörling


Depuis le shell de commande:

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

(Mais cela suit la commande shells utiliser control-Z comme 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 -Encoding paramètre) le codage du fichier (qui permet le transcodage en utilisant un codage différent pour la lecture et l’écriture).


19
2018-06-10 07:33



Alias ​​PowerShell cat à Get-Content aussi. Il est conçu pour accepter de nombreuses commandes Linux de base sans beaucoup, voire aucune modification. - Bob
Bob, sauf si les commutateurs et les options sont impliqués. - Joey
@ Richard: Copier / b a + b + c output.txt ne vérifie pas sur Ctrl-Z. Les deux variantes copient l'intégralité du fichier s'il n'y a pas de ctrl-Z dans le fichier. - Tonny
Notez que vous pouvez également inclure des caractères génériques, la façon dont les caractères génériques fonctionnent dans Windows signifie que la liste d’extensions ne contient pas de +, alors copy [/b] *.fna all_fna_files.fna.. - Random832
Si je me souviens d'un ancien test, j'ai déjà utilisé COPY avec / B pour concaténer, ignorer les marqueurs CTRL-Z / EOF et effectuer la concaténation correctement! mais à en juger par copie /? vous devrez peut-être faire beaucoup de / B comme cela semble peut-être après copie, après chaque fichier src et après le fichier dest .. étrange. - barlop


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.txt fournissent également le même résultat, mais il remplacera le fichier précédent.


2
2018-03-20 13:41



peut-être que vous avez GNU pour Windows, ou Cygwin dans votre chemin, ou utilisez 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 se référer à cmd.exe. - Shanteva
Windows CMD et MS-DOS ne sont pas la même chose. Il n'y a pas cat commande à la fois en cmd et DOS, seulement cat alias dans Powershell - phuclv
vous pouvez aussi utiliser type commander type *.txt > file.merge - Riz