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"];
Comando Nombre Función pwdPrint Working Directory Te dice dónde estás ahora mismo. cdChange Directory Te mueve a una nueva carpeta. cd ..Sube un nivel. cd ~Va a tu directorio personal (home). cd -Vuelve al directorio anterior. lsList Muestra 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/.
Comando Función Ejemplo mkdirCrear directorio mkdir projectstouchCrear archivo vacío touch notes.txtcpCopiar cp notes.txt backup.txtcp -rCopiar de forma recursiva (carpeta) cp -r projects/ projects-backup/mvMover (o renombrar) mv notes.txt doc.txtrmEliminar (borrar) rm file.txtrmdirEliminar directorio vacío rmdir old-empty-dirrm -iConfirmación interactiva rm -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ón Qué 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ón Qué 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.
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
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?
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?
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?