Що таке еквівалент Windows кота команди Unix?


203

Я хочу робити саме те, що робить Unix "cat", але на своєму ПК. Чи існує проста еквівалентна команда для командного рядка Windows?

Зокрема, я хочу створити файл з усіх файлів заданого типу в папці

У Unix:

cat *fna >all_fna_files.fna

(який об'єднує всі текстові файли ".fna" в один великий текстовий файл)


Жодна з цих пропозицій не може прийняти переспрямування на STDIN.
буде

2
Powershell:cat file.txt
Каньйон Колоб

Крос-дублікат: stackoverflow.com/q/60244/11683
GSerg

Відповіді:


253

type

Він працює через command.com, cmdі PowerShell (хоча в останньому це псевдонім для Get-Content, так є cat, так що ви можете використовувати будь-який). Зі статті Вікіпедії (моє наголос):

Під час обчислень type - це команда в різних VMS. Інтерпретатори (оболонки) командного рядка AmigaDOS, CP / M, DOS, OS / 2 та Microsoft Windows, такі як COMMAND.COM, cmd.exe, 4DOS / 4NT та Windows PowerShell. Він використовується для відображення вмісту вказаних файлів. Це аналогічно команді 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
Гарна інформативна відповідь, тому +1. Хотілося б, щоб я міг дати Microsoft -1, хоч за абсолютно неоднозначне ім'я команди. type filenameзмушує мене думати, що команда повинна повертати тип файлу, а не вміст файлу!
PenguinCoder

28
Кіт насправді не здається набагато кращим.
Девід Бойке

9
@davidboike Це набагато краще, оскільки насправді означає і означає те, що робить: Програма Cat - це стандартна утиліта Unix, яка об'єднує та перераховує файли. Назва - це абревіатура катенату, синонім конкатенату. Стаття у Вікіпедії Чи можете ви сказати те саме для команди MS-DOS type??
PenguinCoder

11
@PenguinCoder За винятком того, typeщо не з'єднує файли; це просто typeвміст їх на екран. Це трубопровід у прикладі, який насправді поєднує файли, а не typeкоманду.
Енді


22

З командної оболонки:

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

(З цього випливає, що командні оболонки використовують control-Z як кінцевий маркер файлу, тому в деяких випадках не підходить).

В PowerShell:

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

і ви можете керувати (використовуючи -Encodingпараметр) кодування файлу (що дозволяє перекодувати, використовуючи різні кодування для читання і запису).


8
PowerShell псевдоніми catв Get-Contentтеж. Він розроблений для прийняття багатьох основних команд Linux без особливих змін, якщо такі є.
Боб

1
Боб, за винятком випадків, коли задіяні комутатори та параметри.
Joey

@Richard: Copy / ba + b + c output.txt не перевіряється на Ctrl-Z. Обидва варіанти копіюють весь файл, якщо у файлі НЕ ctrl-Z.
Тонні

2
Зверніть увагу , що ви можете включати в себе символи теж, то , як групові символи працюють у вікнах означає , що ви не будете переплуталися список розширення не містить +, так copy [/b] *.fna all_fna_files.fna..
Random832

якщо я згадую колишній тест, який я колись робив, використовуючи COPY з / B для об'єднання, ігноруватимуть маркери CTRL-Z / EOF і виконають конкатенацію належним чином! але судячи з копії /? Вам може знадобитися зробити багато / B, як здається, можливо, після копіювання, після кожного src-файлу та після файлу dest .. дивно.
барлоп

1

cat log*.txt >> myBigLogFile.txt 

Примітка: cat log*.txt > myBigLogFile2.txtтакож забезпечує один і той же результат, але це буде перевизначати попередній файл.


3
Чи не DOS більше не річ, але більшість людей використовують його для позначення cmd.exe.
Shanteva

1
Windows , CMD і MS-DOS не те ж саме . Там немає catкоманди як в ЦМД і DOS, тільки catпсевдонім в Powershell
phuclv

ви також можете скористатися typeкомандоюtype *.txt > file.merge
Riz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.