Estoy trabajando en un script para buscar archivos con más de 30 días en una carpeta determinada. Según el requisito, tengo que eliminar solo archivos con extensión.registroo.afueray omitir subdirectorios.
El siguiente comando devuelve todos los archivos .log* que se modificaron hace 30 días. Sin embargo, devuelve todos los archivos .out, incluso los recientes. ¿Hay algún problema en el siguiente código?
find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"
¿Podría decirme qué está mal en la declaración anterior?
Respuesta1
Intentar:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
El problema era que find
une lo lógico -y más fuerte que lo lógico- o. Los padres contrarrestan eso.
Sin los padres, find
busca archivos que coincidan.cualquiera(a)-mtime +30 -type f -name "*.log*"
o(b) -name "*.out*"
.
Con los padres, find
busca archivos que (a) coincidan-mtime +30 -type f
y(b) coincidir con -name "*.log*"
o -name "*.out*"
.