Introducción
¿Te has preguntado alguna vez cómo encontrar archivos en un directorio que no se han tocado en años? Tanto si estás limpiando archivos antiguos, archivando datos o buscando archivos obsoletos, el comando find de Linux es la solución ideal. En este consejo, te mostraremos cómo listar archivos por su antigüedad en Linux usando un comando sencillo pero potente.
El comando
find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;
Este comando te permite localizar archivos según su fecha de última modificación, filtrarlos por tipo o nombre y mostrar información detallada sobre ellos.
Desglose del comando
1. /path/to/files
Esto especifica el directorio en el que buscar. Reemplázalo por la ruta real de la carpeta que quieres explorar.
- Ejemplo: si quieres buscar en tu biblioteca de fotos, usa
~/Pictures.
2. -type f
La opción -type especifica el tipo de elementos que se van a buscar.
f: se refiere solo a archivos (ignora los directorios).
3. -name '*.jpg'
Esto filtra los resultados según los nombres de archivo o las extensiones.
- Ejemplo:
*.jpgbusca archivos que terminan en.jpg. - Puedes reemplazarlo por otros patrones, como
*.txtpara archivos de texto o*.logpara archivos de registro.
4. -mtime +30
Esta es la clave para filtrar archivos según su antigüedad.
+30: busca archivos modificados por última vez hace más de 30 días.- Reemplaza
30por cualquier número según tus necesidades:- 1 año: usa
-mtime +365. - 1 semana: usa
-mtime +7.
- 1 año: usa
5. -exec ls -l {} \;
Esto le dice a Linux qué hacer con los archivos que encuentra.
-exec: ejecuta un comando en cada archivo.ls -l: muestra información detallada sobre cada archivo (por ejemplo, tamaño, permisos, propietario y fecha de última modificación).{}: marcador de posición para cada archivo encontrado.\;: indica el final del comando.
Consejo profesional
¿Quieres probar el comando sin ejecutar ls -l? Omite la parte -exec:
find /path/to/files -type f -name '*.jpg' -mtime +30
Esto simplemente mostrará las rutas de los archivos sin detalles adicionales.
¿Por qué usar este comando?
El comando find es increíblemente versátil y útil para las tareas de mantenimiento del sistema:
- Liberar espacio en disco: identifica y elimina archivos antiguos.
- Archivar datos antiguos: mueve a un almacenamiento de copia de seguridad los archivos que llevan meses o años sin tocarse.
- Supervisar archivos obsoletos: busca archivos desactualizados en directorios críticos.
Ejemplos prácticos
Ejemplo 1: buscar documentos antiguos
Busca .docx archivos en tu carpeta Documents que no se hayan modificado en más de 90 días:
find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;
Ejemplo 2: localizar archivos grandes de más de 6 meses
Busca archivos de más de 100 MB en /home/user que no se hayan modificado en más de 6 meses:
find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
-size +100M: filtra archivos de más de 100 MB.ls -lh: muestra los tamaños de archivo en formato legible (por ejemplo, MB, GB).
Ejemplo 3: buscar PDF antiguos
Busca .pdf archivos en /home/user/Downloads que no se hayan modificado en el último año:
find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;
Ejemplo 4: buscar archivos modificados recientemente
Busca .txt archivos modificados en los últimos 7 días en /var/www:
find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
-mtime -7: busca archivos modificados en los últimos 7 días.
Ejemplo 5: eliminar archivos temporales antiguos
Elimina archivos en /tmp que no se hayan modificado en más de 30 días:
find /tmp -type f -mtime +30 -exec rm {} \;
rm: elimina los archivos.- Advertencia: úsalo con precaución, ya que esto elimina los archivos de forma permanente.
Ejemplo 6: archivar archivos multimedia antiguos
Mueve .mp4 archivos de más de 60 días desde ~/Videos a una carpeta de archivo:
find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
mv: mueve los archivos a la carpeta especificada.
Ejemplo 7: buscar archivos creados en un intervalo de tiempo específico
Busca .log archivos creados hace entre 30 y 60 días en /var/log:
find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
-mtime +30: archivos de más de 30 días.-mtime -60: archivos modificados en los últimos 60 días.
Ejemplo 8: buscar archivos vacíos de más de 1 semana
Localiza archivos vacíos en /home/user que no se hayan modificado en la última semana:
find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
-empty: filtra archivos con tamaño cero.
Ejemplo 9: buscar archivos por fecha de acceso
Busca .png archivos en /var/www/html que no se hayan consultado en los últimos 90 días:
find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
-atime: filtra archivos por fecha de acceso en lugar de por fecha de modificación.
Ejemplo 10: buscar archivos creados recientemente
Localiza archivos en /home/user creados en los últimos 3 días:
find /home/user -type f -ctime -3 -exec ls -l {} \;
-ctime: filtra archivos por fecha de creación.
Ejemplo 11: buscar archivos por permisos
Busca archivos en /etc con permisos específicos (por ejemplo, con permiso de escritura para otros):
find /etc -type f -perm /o+w -exec ls -l {} \;
-perm /o+w: busca archivos en los que otros pueden escribir.
Ejemplo 12: localizar archivos modificados en la última hora
Busca archivos modificados en la última hora en /home/user/Documents:
find ~/Documents -type f -mmin -60 -exec ls -l {} \;
-mmin -60: filtra archivos modificados en los últimos 60 minutos.
Ejemplo 13: buscar archivos con un propietario específico
Busca archivos pertenecientes al usuario jose en /var/log que no se hayan modificado en más de 90 días:
find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
-user jose: filtra archivos pertenecientes al usuario especificado.
Ejemplo 14: excluir directorios específicos
Busca .jpg archivos en /home/user de más de 30 días, excluyendo la carpeta Downloads:
find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
-not -path: excluye los archivos del directorio especificado.
Ejemplo 15: buscar archivos modificados en una fecha específica
Busca archivos modificados hace exactamente 10 días en /home/user:
find /home/user -type f -mtime 10 -exec ls -l {} \;
-mtime 10: busca archivos modificados hace exactamente 10 días.
Ejemplo 16: localizar archivos con extensiones específicas
Busca .zip y .tar.gz archivos de más de 60 días en /backups:
find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
\( -name '*.zip' -o -name '*.tar.gz' \): busca varias extensiones de archivo.
Conclusión
El comando find de Linux es una herramienta potente para gestionar archivos según su antigüedad, tipo y nombre. Tanto si estás liberando espacio en disco, archivando datos antiguos o supervisando archivos obsoletos, este comando te da el control total sobre tus directorios.
¡Pruébalo hoy y lleva tus habilidades con Linux al siguiente nivel!