2009-03-09 22 views
16

necesito redirigir una salida de un comando a dos archivos dicen file1 y file2 file1 es un archivo nuevo y file2 ya es un archivo existente donde tengo que anexar la salida he intentadocómo redirigir una salida de un comando a dos archivos

Esto no está dando los resultados esperados:

command > file1 > file2 
+0

Duplicado: http://stackoverflow.com/questions/76700/whats-a-simple-method-to-dump-pipe-input-to-a-file-linux, http: // stackoverflow.com/questions/418896/how-to-redirect-output-to-a-file-and-stdout –

+0

Ambos esos "Dupes" son específicamente Linux/bash. Esta pregunta es un poco más útil ya que es un agnóstico del sistema operativo. Es particularmente agradable tener todas las soluciones en una sola respuesta para comparar, me alegro de que no se haya cerrado como un engaño y no hay mods que lo hayan recortado por ser demasiado general o por tonterías. –

Respuesta

8

para Windows (cmd.exe):

command > file1 & type file1 >> file2 
+0

Esto no va a funcionar a menos que "comando" se complete rápidamente, la parte "tipo" no se ejecutará hasta después (y en ese momento podría ser una copia). Podría intentar ejecutar "comando" en otra ventana con alguna forma de "Inicio", pero luego la segunda parte fallará porque los archivos de proceso por lotes de Windows no tienen equivalente "final". Sería mejor ir con PowerShell para este trabajo - o el nuevo subsistema Windows bash - o instalar git y usarlo bash - o descargar tee.cmd de algún lado (solía tener una copia de tee.cmd para dos en los años 80) –

+0

Tiene razón, podría ser una copia y esto no es óptimo en general, pero sin 'tee' no es posible con cmd.exe. 'tee' está en los puertos de Windows de las utilidades de GNU, como el que viene con git para Windows o Chef, por lo que no es imposible de obtener. La intención de la respuesta era escribir * algo * que emule este comportamiento en cmd.exe. Otros escribieron la variante Powershell. – Tomalak

13

estás pasarlo g para el comando tee.

$ echo existing >file2 
$ date | tee file1 >> file2 
$ cat file2 
existing 
Mon Mar 9 10:40:01 CET 2009 
$ cat file1 
Mon Mar 9 10:40:01 CET 2009 
$ 
2

Asumiendo que estás en un sistema similar a Linux, intenta

command | tee file1 >> file2 

tee divide el flujo de salida y la envía a dos destinos.

0

En Linux, puede hacer esto

command | tee file1 >> file2

3

En PowerShell Use tee-object (o su tee alias)

command | tee first-file | out-file second-file 

también pueden jugar a una variable (por ejemplo, para su posterior procesamiento).

1

Será posible con el siguiente comando. comando | tee-archivo1 archivo2

Cuestiones relacionadas