GNU/Linux >> Tutoriales Linux >  >> Linux

¿Encontrar directorios con todos los archivos dentro de más de X?

Probablemente sea posible hacer esto sin crear archivos mediante la sustitución de procesos o algo así, pero aquí hay una solución rápida y sucia:

find . -type f -mtime +30 -printf '%h\n' | sort | uniq > old.txt
find . -type f -mtime -30 -printf '%h\n' | sort | uniq > new.txt
grep -vf new.txt old.txt

El primer comando genera la ruta de cada archivo modificado hace más de 30 días (en -printf de find -- al menos con GNU find en mi sistema -- %h imprime la ruta completa excepto el nombre de archivo real), luego los ordena y elimina cualquier duplicado, y coloca todo en un archivo llamado old.txt .

El segundo comando hace lo mismo pero con todos los archivos modificados hace menos de 30 días y los coloca en otro archivo, new.txt .

La línea grep imprime cada línea de old.txt que no aparece en new.txt, por lo que le dará una lista de directorios que contienen solo archivos que se modificaron por última vez hace más de 30 días.

Todo esto es usando las versiones GNU de las utilidades. No sé si la sintaxis coincide con las versiones de BSD, etc.


Finalmente descubrí la frase mágica:

for dir in `find . -type d -mtime +30`; do test `find $dir -type f -mtime -30 -print -quit` || echo $dir; done

Esto imprime todos los directorios que tienen un tiempo de modificación superior a 30 días y ningún archivo modificado en los últimos 30 días.


Linux
  1. ¿Eliminar todos los archivos/directorios excepto un archivo?

  2. ¿Eliminar todos los archivos excepto en un determinado subdirectorio con Buscar?

  3. ¿Cómo reemplazar un carácter con otro en todos los nombres de archivo de los directorios actuales?

  4. Cómo encontrar archivos con el comando fd en Linux

  5. Enumere recursivamente todos los archivos en un directorio, incluidos los archivos en los directorios de enlaces simbólicos

Cómo encontrar un archivo en Linux en todos los directorios recursivamente

Cómo eliminar archivos anteriores a los días especificados en Linux

¿Cómo encontrar todos los archivos/carpetas con permiso 777 en Linux?

¿Cómo encontrar todos los archivos que terminan en .rb con Linux?

Encuentra todos los archivos con un nombre que contenga una cadena

Encuentra todos los archivos de más de un minuto