Какой эквивалент команды cat в Unix для Windows?

Вопрос или проблема

Я хочу сделать в точности то, что делает unix “cat”, но на моем ПК. Есть ли простой эквивалентный командный для командной строки Windows?

Конкретно я хочу создать файл из всех файлов данного типа в папке

В Unix:

cat *fna >all_fna_files.fna

(который объединяет все текстовые файлы с расширением “.fna” в один большой текстовый файл)

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. Она используется для отображения содержимого указанных файлов. Она аналогична команде cat в 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

Из командной оболочки:

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

(Но это следует за использованием командной оболочки контрольного символа Z как маркера конца файла, поэтому не подходит в некоторых случаях).

В PowerShell:

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

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

Я только что использовал команду cat в DOS (Windows 7 Pro) следующим образом и успешно объединил 3 файла (log1.txt, log2.txt, log3.txt) в один файл:

cat log*.txt >> myBigLogFile.txt 

Примечание: cat log*.txt > myBigLogFile2.txt также предоставляет тот же результат, но он перезапишет предыдущий файл.

Если вы хотите сделать

cat >NewTextFile.txt

чтобы сохранить буфер обмена в текстовый файл в Windows (как я наткнулся на этот вопрос), вы можете сделать

copy con: NewTextFile.txt

А затем CTRL+V.

Ответ или решение

Вопрос о том, как в Windows выполнить эквивалент команды Unix cat, важен для пользователей, переходящих с Unix-систем на Windows или работающих в межплатформенной среде. Команда cat в Unix объединяет и выводит содержимое текстовых файлов, и часто используется для создания одного файла из нескольких. Рассмотрим различные способы достижения той же цели в Windows.

Использование команды type в Windows:

Команда type является наиболее близким аналогом Unix-команды cat в Windows и доступна как в стандартной командной строке, так и в PowerShell.

Пример:

C:\>type *.fna > all_fna_files.fna

Эта команда объединяет все файлы с расширением .fna в текущем каталоге в один файл all_fna_files.fna.

Команда copy в командной строке:

Другой метод заключается в использовании команды copy для объединения файлов. Однако нужно учитывать, что copy использует маркер конца файла (EOF), что может быть нежелательно в некоторых случаях.

Пример:

C:\>copy /b *.fna all_fna_files.fna

Аргумент /b указывает на бинарный режим копирования, что позволяет избежать потенциальных проблем с EOF.

Использование PowerShell:

PowerShell предлагает расширенные возможностей обработки текстовых файлов с помощью команды Get-Content, которая имеет алиас cat. Это позволяет использовать знакомый синтаксис из Unix.

Пример:

Get-Content *.fna | Out-File -FilePath all_fna_files.fna -Encoding UTF8

Здесь Out-File позволяет указать кодировку результирующего файла, что может быть полезно для обеспечения совместимости с другими системами или программами.

Заключение

Существует несколько подходов к выполнению задачи объединения файлов в Windows, аналогичных команде cat в Unix. Выбор подходящего метода зависит от требований к обработке текста и особенностей используемой среды. Использование команды type в командной строке или Get-Content в PowerShell позволяет достичь цели с минимальными изменениями привычного рабочего процесса.

Оцените материал
Добавить комментарий

Капча загружается...