Saltar al contenido

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):
8mkdir -p mi-proyecto/datos/raw

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.

Y si te toca trabajar con una carpeta que ya tiene espacios en el nombre — porque la creó otra persona o tu sistema la tiene así — ponla entre comillas simples: cd 'mis datos de enero'. O escribe las primeras letras y pulsa Tab, que se encarga solo. La convención profesional sigue siendo guiones (datos-enero), pero el mundo real no siempre coopera.

### 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:

1touch notas.txt # Crea un archivo vacío
2touch datos.csv readme.md # Crea varios a la vez

Crea archivos vacíos al instante. Útil para configuraciones, README y archivos de código nuevos.

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:

1echo "Hola mundo" > saludo.txt # Crea archivo con ese contenido
2echo "Segunda línea" >> saludo.txt # AÑADE al final (no sobreescribe)
3cat saludo.txt # Muestra el contenido del archivo

> crea/sobreescribe, >> añade al final. El tercer comando muestra el contenido.

¡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. En Linux todos estos comandos funcionan igual que en Mac — si usas WSL o una máquina Linux, esta lección te vale tal cual.

1cp archivo.txt copia.txt # Copiar archivo
2cp archivo.txt otra-carpeta/ # Copiar a otra carpeta
3cp -r mi-carpeta/ backup/ # Copiar carpeta ENTERA (-r = recursivo)

Copia archivos y carpetas. Para carpetas enteras, usa la opción recursiva.

Ni cp ni mv preguntan nada si el destino ya existe. Lo machacan y devuelven éxito. Si copias datos.csv a una carpeta que ya tiene un datos.csv, el viejo desaparece sin aviso. Para que pregunte antes: cp -i (Mac) o Copy-Item -Confirm (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.

1mv archivo.txt otra-carpeta/ # Mover a otra carpeta
2mv nombre-viejo.txt nombre-nuevo.txt # Renombrar (mismo lugar, distinto nombre)

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, una herramienta de control de versiones que aprenderás más adelante).

### 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.

1rm archivo.txt # Eliminar un archivo
2rm archivo1.txt archivo2.txt # Eliminar varios
3rm -r carpeta/ # Eliminar carpeta y todo su contenido

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.

Y aquí es donde el tabulador que viste en la lección anterior cambia de categoría. Allí te ahorraba teclear; aquí te ahorra un disgusto. Tab sólo completa nombres de ficheros que existen de verdad, así que si escribes las primeras letras y pulsas Tab, es imposible que borres algo por una errata: o completa el nombre correcto, o no completa nada y ya sabes que te habías equivocado. La regla, entonces, para cualquier rm: nunca escribas el nombre entero a mano. Tres letras y Tab.

### 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. Quienes trabajan con datos organizan sus proyectos con carpetas como data/, scripts/, output/ y docs/. Hagámoslo:

1mkdir proyecto-ventas
2cd proyecto-ventas
3mkdir data scripts output docs
4ls

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

1touch data/.gitkeep
2touch scripts/limpiar_datos.py
3touch docs/README.md
4echo "# 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 otra persona 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.

### Los errores más comunes (y qué significan)

Estos cinco mensajes cubren el 90% de los errores que vas a ver al copiar, mover y crear. Todos tienen la misma estructura: el comando que falló, luego qué fichero o carpeta es, luego por qué:

  • cp: carpeta is a directory (not copied). — intentaste copiar una carpeta sin -r. Solución: cp -r carpeta/ destino/. (En Linux verás: cp: -r not specified; omitting directory.)
  • cp: noexiste.txt: No such file or directory — el archivo que quieres copiar no existe. ¿Errata en el nombre? Comprueba con ls. (En Linux verás: cp: cannot stat'noexiste.txt': No such file or directory.)
  • mkdir: carpeta: File exists — la carpeta ya existe. No es un error grave: ya tienes lo que querías. (En Linux verás: mkdir: cannot create directory 'carpeta': File exists.)
  • mkdir: sin: No such file or directory — la carpeta intermedia no existe. Solución: mkdir -p sin/padre. (En Linux verás: mkdir: cannot create directory 'sin/padre': No such file or directory.)
  • mv: rename carpeta to informe.txt: Not a directory — intentas mover una carpeta encima de un archivo. Decide: ¿quieres borrar el archivo primero o renombrar la carpeta? (En Linux verás: mv: cannot overwrite non-directory with directory.)

En PowerShell los mismos errores se leen distinto. Los tres que más vas a ver: "Cannot find path … because it does not exist" (el fichero que quieres borrar o copiar no está — ¿errata? Tres letras y Tab), "An item with the specified name … already exists" (la carpeta ya existe — no es grave, ya tienes lo que querías), y "Could not find a part of the path" (falta una carpeta intermedia de la ruta — créala primero). El patrón es el mismo en los tres sistemas: primero qué comando falló, luego sobre qué, luego por qué. Si aprendes a leerlos en ese orden, entiendes también los que no has visto nunca.

### El comodín *: seleccionar varios archivos de golpe

El asterisco (*) en la terminal significa "cualquier cosa". Lo usarás para seleccionar grupos de archivos sin escribir todos los nombres. temp*.txt selecciona todo lo que empieza por "temp" y acaba en ".txt". *.csv selecciona todos los CSV de la carpeta. Es potente y peligroso a partes iguales:

1# Listar solo los CSV:
2ls *.csv
3
4# Copiar todos los TXT a otra carpeta:
5cp *.txt backup/
6
7# EL PELIGRO: un espacio de más y borras TODO
8rm temp*.txt # Correcto: borra temp1.txt, temp2.txt (lo que empieza por temp)
9rm temp *.txt # MAL: borra "temp" (no existe) Y TODOS los .txt de la carpeta
10
11# La regla: SIEMPRE haz ls primero con el mismo patrón
12ls temp*.txt # Confirma que sale lo que esperas
13rm temp*.txt # Ahora sí, borra solo eso

* = "cualquier cosa". Un espacio de más cambia completamente lo que se borra. ls primero, rm después.

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...