Ir al contenido

2.1 Navegación y Gestión de Archivos

tutorial.getReady

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

flowchart TB;
  R["/"] --> E["/etc"];
  R --> H["/home"];
  R --> V["/var"];
  R --> U["/usr"];
  R --> T["/tmp"];
  H --> HU["/home/usuario"];
  • 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).
flowchart LR;
  PWD["pwd = /home/juan/docs"] --> REL["ruta relativa: ../informe.txt"];
  PWD --> ABS["ruta absoluta: /home/juan/informe.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/.

Ejemplos visuales de globs asterisco interrogacion corchetes

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.

Búsqueda, tipo, tamaño y tiempo

PatrónQué hace
find . -name "file.txt"Buscar un nombre exacto
find . -iname "readme.md"Buscar sin distinguir mayúsculas/minúsculas
find /etc -name "*.conf"Buscar por extensión/patrón
find . -type fSolo archivos regulares
find . -type dSolo directorios
find . -type lSolo enlaces simbólicos
find . -maxdepth 1 -type fSolo el directorio actual (sin recursión)
find . -type f -emptyArchivos vacíos
find . -type d -emptyDirectorios vacíos
find . -type f -size +100MArchivos mayores de 100 MB
find . -type f -size -10MArchivos menores de 10 MB
find . -type f -mtime -7Modificados en los últimos 7 días
find . -type f -mtime +30Modificados hace más de 30 días
find . -type f -mmin -60Modificados en los últimos 60 minutos
find . -type f -atime -1Accedidos en las últimas 24 horas
find . -type f -ctime -3Metadatos cambiados en los últimos 3 días

Permisos, exclusiones y acciones

PatrónQué hace
find . -type f -perm 644Permiso exacto (modo octal)
find . -type f -perm -u+wArchivos escribibles por el usuario
find / -type f -user rootArchivos cuyo dueño es root
find /srv -type f -group www-dataArchivos cuyo grupo es www-data
find . -path ./node_modules -prune -o -type f -printExcluir un directorio
find . \\( -path ./node_modules -o -path ./.git \\) -prune -o -type f -printExcluir varios directorios
find . -type f ! -name "*.log"Excluir por patrón de nombre
find . -type f ! -path "*/cache/*"Excluir por patrón de ruta
find . -type f -name "*.tmp" -deleteBorrar coincidencias
find . -type f -name "*.log" -exec gzip {} \\;Ejecutar un comando por archivo
find . -type f -name "*.jpg" -exec mv {} /tmp/images/ \\;Mover coincidencias
find . -type f -name "*.conf" -exec grep -H "listen" {} \\;Buscar texto dentro de coincidencias
find . -type f -name "*.log" -exec rm {} +Borrado en lote (más rápido que \\;)
`find . -type f -name “*.txt” -print0 \xargs -0 rm -f`
  • 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?