Comparación práctica: tree > archivo.txt en Linux vs Windows

Yo usó tree en Linux y cuando lo he querido usar en Windows no sirve igual. Esta es la explicación


Vamos a usar el mismo ejemplo de estructura en ambos sistemas.

📁 Estructura de ejemplo

Supongamos que tenemos este directorio:

proyecto/
│
├── carpeta1/
│   ├── archivo1.txt
│   └── archivo2.txt
│
├── carpeta2/
│   └── imagen.png
│
├── carpeta3/
│   └── notas.md
│
├── principal.py
└── README.md

Hay:

  • 3 carpetas
  • Archivos dentro de ellas
  • 2 archivos fuera de las carpetas

🐧 En Linux

En Linux, el comando:

tree > archivo.txt

Por defecto incluye carpetas y archivos.

📄 Contenido de archivo.txt

El archivo generado contendrá algo así:

.
├── carpeta1
│   ├── archivo1.txt
│   └── archivo2.txt
├── carpeta2
│   └── imagen.png
├── carpeta3
│   └── notas.md
├── principal.py
└── README.md

3 directories, 6 files

✔ Muestra carpetas ✔ Muestra archivos ✔ Incluye conteo final ✔ Usa caracteres UTF-8 modernos (├──, └──, )


🪟 En Windows

Ahora vamos al mismo ejemplo en Windows.


🔹 Caso 1: Usando

tree > archivo.txt

En Windows, por defecto solo muestra carpetas.

📄 Contenido de archivo.txt

C:.
└── carpeta1
└── carpeta2
└── carpeta3

⚠ No aparecen:

  • archivo1.txt
  • archivo2.txt
  • imagen.png
  • notas.md
  • principal.py
  • README.md

Porque Windows tree no muestra archivos sin el modificador /F.


🔹 Caso 2: Usando /F

tree /F > archivo.txt

Ahora sí mostrará archivos y carpetas.

📄 Contenido del archivo

C:.
│   principal.py
│   README.md
│
├── carpeta1
│       archivo1.txt
│       archivo2.txt
│
├── carpeta2
│       imagen.png
│
└── carpeta3
        notas.md

✔ Ahora sí aparecen todos los archivos ❌ No muestra conteo final ⚠ Usa caracteres gráficos extendidos de Windows


🔤 ¿Qué hace /A?

El modificador /A le dice a Windows:

Usa solo caracteres ASCII simples en lugar de caracteres gráficos extendidos.


🔹 Caso 3: Usando /F /A

tree /F /A > archivo.txt

📄 Contenido resultante

C:.
|   principal.py
|   README.md
|
+---carpeta1
|       archivo1.txt
|       archivo2.txt
|
+---carpeta2
|       imagen.png
|
+---carpeta3
        notas.md

✔ Más compatible ✔ Ideal para subir a GitHub ✔ Se ve bien en Linux ✔ No genera símbolos raros ❌ Visualmente menos bonito que Linux


📊 Comparación Final

Sistema Comando ¿Muestra archivos? Caracteres Conteo final
Linux tree > archivo.txt ✅ Sí UTF-8 moderno ✅ Sí
Windows tree > archivo.txt ❌ No Extendidos ❌ No
Windows tree /F > archivo.txt ✅ Sí Extendidos ❌ No
Windows tree /F /A > archivo.txt ✅ Sí ASCII simple ❌ No

🎯 Conclusión técnica

El equivalente real al comportamiento típico de Linux en Windows es:

tree /F /A > archivo.txt

Porque:

  • /F → incluye archivos
  • /A → evita problemas de codificación

¿Qué problema de codificación evita /A?

El problema no es exactamente “codificación UTF-8 vs ANSI” directamente…

El problema es que:

  • Windows tree sin /A usa caracteres gráficos extendidos del código OEM (CP437 o CP850).

  • Cuando rediriges a un archivo (>), esos caracteres se guardan con esa codificación.

  • Si luego abres ese archivo en:

    • VS Code
    • Notepad moderno
    • Linux
    • GitHub
    • Un editor configurado en UTF-8

👉 Los caracteres pueden verse mal.


🧪 Ejemplo práctico

Supongamos esta estructura:

proyecto/
└── carpeta1/
    └── archivo.txt

🔹 En Windows SIN /A

Ejecutas:

tree /F > archivo.txt

El contenido real del archivo puede verse así en algunos editores:

C:.
├── carpeta1
│   └── archivo.txt

😬 Eso pasa porque:

  • Los caracteres ├── y └── no están en UTF-8.
  • Se interpretan con otra codificación.
  • El editor los muestra corruptos.

En otros casos puede verse así:

ÃÄÄ carpeta1
³   ÀÄÄ archivo.txt

Depende del editor y su configuración.


🔹 Ahora con /A

Ejecutas:

tree /F /A > archivo.txt

El archivo contendrá:

C:.
+---carpeta1
|       archivo.txt

Aquí solo se usan:

  • |
  • +
  • -

Todos son ASCII básico (código 0–127). No dependen de codificación especial.

👉 Se verá bien en:

  • Windows
  • Linux
  • macOS
  • GitHub
  • Markdown
  • Cualquier editor

📌 ¿Por qué pasa esto técnicamente?

Windows tiene dos codificaciones importantes en consola:

  • Code Page OEM (ej: 437 o 850)
  • UTF-8 (65001)

Cuando haces:

tree > archivo.txt

El archivo se guarda usando la codificación activa de la consola.

Pero muchos editores modernos abren archivos como UTF-8 por defecto.

Si el archivo no es UTF-8, aparecen símbolos raros.


🧠 ¿Entonces /A cambia la codificación?

No exactamente.

Lo que hace /A es:

Evitar caracteres especiales que dependen de una codificación extendida.

Es decir:

✔ No arregla la codificación ✔ Evita usar caracteres problemáticos

Es una solución preventiva.


🎯 Ejemplo real comparado

❌ Sin /A

├── carpeta
│   └── archivo.txt

Puede verse como:

├── carpeta
│   └── archivo.txt

✅ Con /A

+---carpeta
|   +---archivo.txt

Siempre se verá correcto.


💡 Recomendación profesional

Si el archivo:

  • Se va a subir a GitHub
  • Se va a compartir entre Windows y Linux
  • Se va a usar en documentación Markdown
  • Se va a versionar en Git

Usa:

tree /F /A > archivo.txt

Y si quieres máxima compatibilidad moderna:

tree /F /A | Out-File archivo.txt -Encoding utf8

 

Comentarios