lección 3

Crear, mover, copiar y borrar archivos

Domina las operaciones fundamentales con archivos y carpetas desde la terminal: crear, copiar, mover, renombrar y eliminar.

50 min

Ya sabes moverte por tu ordenador sin ratón. Ahora viene el siguiente paso: aprender a manipular archivos y carpetas directamente desde la terminal. Crear carpetas, crear archivos vacíos, copiarlos, moverlos, renombrarlos y eliminarlos. Son las operaciones que harás miles de veces en tu carrera — y la terminal las hace más rápidas y precisas que cualquier interfaz gráfica.

Piénsalo así: hasta ahora eras un turista que recorría la ciudad mirando edificios. Hoy te conviertes en arquitecto: vas a construir, demoler y reorganizar. Y aquí es donde la terminal brilla de verdad, porque en un solo comando puedes hacer cosas que con el ratón requerirían docenas de clicks.

### mkdir — crear carpetas

El comando mkdir (make directory) crea una carpeta nueva. Es el equivalente a hacer click derecho → "Nueva carpeta" en tu explorador de archivos, pero más rápido y preciso. Funciona igual en ambos sistemas:

1# Funciona igual en 🟦 PowerShell y 🍎 Mac Terminal:
2mkdir mi-proyecto
3
4# Crear carpeta dentro de otra carpeta:
5mkdir mi-proyecto/datos
6
7# Crear toda una estructura de golpe (carpetas anidadas):
8# 🍎 Mac:
9mkdir -p mi-proyecto/datos/raw
10# 🟦 PowerShell:
11mkdir mi-proyecto/datos/raw
12# (PowerShell crea las carpetas intermedias automáticamente)

mkdir = "make directory". Crea carpetas al instante.

En Mac necesitas la opción -p para crear carpetas anidadas que no existen aún (por ejemplo, si "datos" no existe y quieres crear "raw" dentro). PowerShell es más permisivo: crea las carpetas intermedias automáticamente sin necesidad de opciones extra.

### Crear archivos vacíos

¿Para qué querrías crear un archivo vacío? Es más útil de lo que parece. Muchos proyectos de programación necesitan archivos de configuración, archivos README, archivos .gitignore... A veces solo necesitas que el archivo exista para que otra herramienta lo reconozca. Aquí es donde los sistemas difieren:

1# 🍎 Mac Terminal:
2touch notas.txt # Crea un archivo vacío
3touch datos.csv readme.md # Crea varios a la vez
4
5# 🟦 Windows PowerShell:
6New-Item notas.txt # Crea un archivo vacío
7New-Item datos.csv, readme.md # Crea varios a la vez
8# Atajo más corto:
9ni notas.txt # ni = alias de New-Item

touch (Mac) y New-Item (PowerShell) crean archivos vacíos.

Consejo de senior: en el mundo real, la primera cosa que hago al empezar un proyecto nuevo es abrir la terminal y escribir: mkdir mi-proyecto && cd mi-proyecto. Luego creo los archivos base. Este flujo se vuelve automático con la práctica — como poner la primera piedra de un edificio.

### Escribir contenido en archivos desde la terminal

Crear archivos vacíos está bien, pero ¿y si quieres poner algo dentro sin abrir un editor? Puedes redirigir texto a un archivo directamente:

1# 🍎 Mac Terminal:
2echo "Hola mundo" > saludo.txt # Crea archivo con ese contenido
3echo "Segunda línea" >> saludo.txt # AÑADE al final (no sobreescribe)
4cat saludo.txt # Muestra el contenido del archivo
5
6# 🟦 Windows PowerShell:
7echo "Hola mundo" > saludo.txt # Crea archivo con ese contenido
8echo "Segunda línea" >> saludo.txt # AÑADE al final (no sobreescribe)
9Get-Content saludo.txt # Muestra el contenido del archivo
10# También funciona: type saludo.txt

> crea/sobreescribe, >> añade al final. cat/Get-Content para leer.

¡Cuidado con > vs >>! Un solo > SOBREESCRIBE el archivo completo — si tenía contenido previo, lo perderás. Dos >> AÑADE al final sin borrar nada. Es un error clásico que todo el mundo comete al menos una vez. Si alguna vez pierdes contenido, ya sabes qué pasó.

### cp — copiar archivos y carpetas

Copiar es como fotocopiar: el original se queda donde está y se crea una copia en el destino. Es la operación más segura porque no pierdes nada.

1# 🍎 Mac Terminal:
2cp archivo.txt copia.txt # Copiar archivo
3cp archivo.txt otra-carpeta/ # Copiar a otra carpeta
4cp -r mi-carpeta/ backup/ # Copiar carpeta ENTERA (-r = recursivo)
5
6# 🟦 Windows PowerShell:
7Copy-Item archivo.txt copia.txt # Copiar archivo
8Copy-Item archivo.txt otra-carpeta/ # Copiar a otra carpeta
9Copy-Item mi-carpeta/ backup/ -Recurse # Copiar carpeta entera
10# Atajo: cp también funciona como alias en PowerShell
11cp archivo.txt copia.txt # Funciona igual

cp (Mac) / Copy-Item (PowerShell). Para carpetas, usa -r (Mac) o -Recurse (PowerShell).

### mv — mover y renombrar

Mover es como cortar y pegar: el archivo desaparece del origen y aparece en el destino. Pero mv tiene un truco: si el destino es un nombre de archivo en la misma carpeta, lo que realmente hace es RENOMBRAR. Un comando, dos funciones.

1# 🍎 Mac Terminal:
2mv archivo.txt otra-carpeta/ # Mover a otra carpeta
3mv nombre-viejo.txt nombre-nuevo.txt # Renombrar (mismo lugar, distinto nombre)
4
5# 🟦 Windows PowerShell:
6Move-Item archivo.txt otra-carpeta/ # Mover a otra carpeta
7Move-Item nombre-viejo.txt nombre-nuevo.txt # Renombrar
8# Atajo: mv también funciona como alias
9mv archivo.txt otra-carpeta/

mv/Move-Item: mover si cambias de carpeta, renombrar si solo cambias el nombre.

Consejo de senior: renombrar archivos con mv es algo que harás constantemente. En mis proyectos, a menudo empiezo con datos-v1.csv y luego renombro a datos-final.csv, datos-final-v2.csv, datos-final-final.csv... (sí, esto es tan malo como suena — por eso existe Git, que aprenderás en la siguiente skill).

### rm — eliminar archivos (con cuidado)

Eliminar desde la terminal es diferente a la papelera de reciclaje. Cuando eliminas con rm (Mac) o Remove-Item (PowerShell), el archivo NO va a la papelera — desaparece directamente. Es como quemar un documento vs tirarlo al cubo de basura donde podrías recuperarlo.

1# 🍎 Mac Terminal:
2rm archivo.txt # Eliminar un archivo
3rm archivo1.txt archivo2.txt # Eliminar varios
4rm -r carpeta/ # Eliminar carpeta y todo su contenido
5
6# 🟦 Windows PowerShell:
7Remove-Item archivo.txt # Eliminar un archivo
8Remove-Item archivo1.txt, archivo2.txt # Eliminar varios
9Remove-Item carpeta/ -Recurse # Eliminar carpeta y contenido
10# Atajo:
11rm archivo.txt # También funciona como alias

rm/Remove-Item: elimina PERMANENTEMENTE. No hay papelera de reciclaje.

⚠️ IMPORTANTE: rm no tiene "¿estás seguro?" ni papelera de reciclaje. Lo que borras, desaparece. En Mac, "rm -rf /" intentaría borrar TODO tu disco (nunca lo hagas). En PowerShell, Remove-Item -Recurse -Force es igual de destructivo. Regla de oro: antes de borrar, haz ls para confirmar qué estás a punto de eliminar.

### Diagrama: flujo de operaciones con archivos

El ciclo de vida de un archivo en la terminal. rm es el punto sin retorno.

### Proyecto mini: estructura de un proyecto de datos

Vamos a aplicar todo lo aprendido creando la estructura de carpetas típica de un proyecto de datos. Los ingenieros de datos organizamos nuestros proyectos con carpetas como data/, scripts/, output/ y docs/. Hagámoslo:

1# Funciona en ambos sistemas:
2mkdir proyecto-ventas
3cd proyecto-ventas
4mkdir data scripts output docs
5ls
6# Resultado: data docs output scripts

En 4 comandos tienes la estructura base de un proyecto real.

1# 🍎 Mac — crear archivos iniciales:
2touch data/.gitkeep
3touch scripts/limpiar_datos.py
4touch docs/README.md
5echo "# Proyecto Ventas" > docs/README.md
6
7# 🟦 PowerShell — crear archivos iniciales:
8New-Item data/.gitkeep
9New-Item scripts/limpiar_datos.py
10New-Item docs/README.md
11echo "# Proyecto Ventas" > docs/README.md

Creamos archivos con nombres descriptivos. El .gitkeep es para que Git reconozca carpetas vacías.

Ahora tienes un proyecto organizado. Los datos irán en data/, los scripts en scripts/, los resultados en output/ y la documentación en docs/. Esta estructura es una convención en la industria — cuando otro ingeniero abra tu proyecto, sabrá inmediatamente dónde buscar cada cosa.

Consejo de senior: siempre crea un README.md en la raíz de cada proyecto. Aunque solo tenga una línea. Tu yo del futuro (y tus compañeros) te lo agradecerán. He perdido horas intentando entender proyectos propios de hace 6 meses porque no dejé ni una nota.

## ejercicios

[01]

Monta tu proyecto de análisis

Estos tres ejercicios son un mismo flujo: aquí montas el proyecto "analisis-clientes" y en los siguientes trabajarás sobre él. Crea la estructura de carpetas (data/raw, data/processed, notebooks, scripts, reports), coloca el dataset inicial de ventas en data/raw/ventas-enero.csv y crea unos ficheros temporales de ejemplo (temp1.txt, temp2.txt y una carpeta cache/) que aparecen al trabajar y que limpiarás al final.

Cargando editor...
[02]

Organiza los datos del proyecto

Seguimos en el proyecto "analisis-clientes" que montaste. Antes de procesar el dataset, tu jefa quiere una copia de seguridad. Copia data/raw/ventas-enero.csv a una carpeta backup/, mueve el original a data/processed/ y renombra la copia a ventas-enero-backup.csv. (Si empiezas directamente aquí, ejecuta primero la solución del ejercicio anterior para tener el proyecto y los ficheros.)

Cargando editor...
[03]

Limpia los temporales del proyecto

Último paso del flujo: tu proyecto "analisis-clientes" tiene los ficheros temporales que creaste al montarlo (temp1.txt, temp2.txt y la carpeta cache/) y que ya no necesitas. Elimínalos de forma segura, verificando siempre antes de borrar.

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...