Puedo eliminar, digamos, todos los archivos regulares en una carpeta con más de 7 días a través de:
find /path/to/dir -type f -mtime +7 -exec rm {} \; con un solo problema. Aquí hay un archivo (.gitignore) que quiero conservar. Intenté usar regex pero aparentemente findutils regex no es compatible con la búsqueda anticipada negativa (?!gitignore)
¿Alguna otra idea?
¡Usa ! -name .gitignore
find /path/to/dir ! -name .gitignore -type f -mtime +7 -exec rm {} \; Puede agrupar varios argumentos entre paréntesis con escape. Ejemplo, para eliminar todos los archivos excepto los archivos .gitignore y javascript (que terminan en .js) :
find /path/to/dir ! \( -name ".gitignore" -o -name "*.js" \) -type f -mtime +7 -exec rm {} \; -o significa or