Saltar al contenido

2.1 Navegación y Gestión de Archivos

¡Prepárate!

  • Entenderás la diferencia crítica entre rutas absolutas y relativas. - Dominarás el listado de archivos avanzados y comodines (ls, *). - Aprenderás el kit de supervivencia para manipular archivos (cp, mv, rm).
  • Conocerás cómo encontrar cualquier archivo perdido con find.

Recuerda que todo comienza en /.

  • Ruta absoluta: Comienza con /. Siempre funciona, sin importar dónde estés. (ej.: /home/user/docs/file.txt).
  • Ruta relativa: No comienza con /. Depende de tu ubicación actual. (ej.: docs/file.txt o ../file.txt).
ComandoNombreFunción
pwdPrint Working DirectoryTe dice dónde estás ahora mismo.
cdChange DirectoryTe mueve a una nueva carpeta.
cd ..Sube un nivel.
cd ~Va a tu directorio personal (home).
cd -Vuelve al directorio anterior.
lsListMuestra los archivos en el directorio actual.

Rara vez ejecutas solo ls. Opciones habituales:

  • ls -l: Listado largo (permisos, propietario, tamaño, fecha).
  • ls -a: Todos los archivos (muestra archivos ocultos que empiezan por .).
  • ls -lh: Listado largo con tamaños legibles para humanos (MB, GB).
  • ls -la: Listado largo de todos los archivos (incluyendo ocultos).
  • ls -ltr: Ordena por fecha (los más recientes al final).

Los comodines ayudan a seleccionar múltiples archivos:

  • *.txt: Todos los .txt.
  • file?.txt: Coincide file1.txt, fileA.txt, etc.
  • docs/*/index.md: Cualquier index.md dentro de un subdirectorio de docs/.
ComandoFunciónEjemplo
mkdirCrear directoriomkdir projects
touchCrear archivo vacíotouch notes.txt
cpCopiarcp notes.txt backup.txt
cp -rCopiar de forma recursiva (carpeta)cp -r projects/ projects-backup/
mvMover (o renombrar)mv notes.txt doc.txt
rmEliminar (borrar)rm file.txt
rmdirEliminar directorio vacíormdir old-empty-dir
rm -iConfirmación interactivarm -i file.txt

Herramientas habituales para localizar archivos en el sistema:

Busca archivos en una jerarquía de directorios.

  • Sintaxis: find [ruta] [expresión]
  • Ejemplos:
    • find /etc -name "*.conf": Busca todos los archivos en /etc que terminen en .conf.
    • find . -type f: Busca solo archivos en el directorio actual.
    • find . -type d: Busca solo directorios.
    • find /var/log -size +10M: Busca archivos mayores de 10 MB.
    • find . -perm 777: Busca archivos con permisos 777.
    • find . -mtime -1: Busca archivos modificados en las últimas 24 horas.
    • find . -user alice: Busca archivos cuyo propietario sea el usuario alice.
    • find . -iname "*.jpg": Búsqueda sin distinguir mayúsculas/minúsculas.
    • find . -maxdepth 2 -name "*.md": Limita la profundidad de búsqueda.
    • find . -not -path "*/node_modules/*": Excluye directorios no deseados.
    • find . -type f -name "*.log" -exec ls -l {} \;: Ejecuta una acción por cada resultado.

Encuentra archivos por nombre usando una base de datos preconstruida (más rápido que find, pero puede estar desactualizada).

  • Sintaxis: locate [patrón]
  • Actualizar la BD: sudo updatedb (actualiza la base de datos que utiliza locate).

Localiza un comando.

  • Ejemplo: which python (muestra la ruta del ejecutable de Python).

Localiza el binario, el código fuente y las páginas de manual de un comando.

  • Ejemplo: whereis ls

Cuando escribes una orden, el shell busca el ejecutable en cada directorio de $PATH (separados por :).

  • Ver tu PATH: echo $PATH
  • Añadir temporalmente un directorio: export PATH="$HOME/bin:$PATH"
  • Hacerlo persistente:
    • En bash: añade el export a ~/.bashrc o ~/.profile
    • En zsh: añádelo a ~/.zshrc

  1. Estás en /home/juan/docs y quieres copiar el archivo informe.txt directamente a la carpeta padre /home/juan. ¿Cuál es el comando con ruta relativa correcto?
  1. Has descargado un script de internet y necesitas encontrar un archivo de log viejo que sea mayor a 100MB alojado en algún lugar de /var/log. ¿Cuál es el comando más idóneo?
  1. Quieres listar todos los archivos, incluyendo los ocultos (que empiezan por punto), ordenados por fecha para ver los más recientes al fondo de la pantalla. ¿Qué combinación de banderas de ls usarías?