Tengo un directorio que contiene una gran cantidad de archivos (como registros para todos los días del año). Me gustaría eliminar todos los archivos creados antes, digamos 22/11. ¿Cómo puedo lograr eso? ¿Debo usar find
entonces exec -rm
? Estoy usando ksh.
26
Respuestas:
El uso
find
sigue siendo la forma preferida de eliminar archivos. Ver http://mywiki.wooledge.org/UsingFind para más información.Una forma de hacerlo es crear un archivo con la marca de tiempo. p.ej
Ahora elimine los archivos GNU
find
(suponiendo en el directorio actual) que coincidan con la marca de tiempo, por ejemplo:o no GNU encontrar
fuente
type -f
limita la acción solo a los archivos.Con GNU o algunos BSD
find
:Tenga en cuenta que comprueba la última hora de modificación de los archivos. En algunos BSD, puede usar
-newerBt
en lugar de-newermt
para comprobar el tiempo de nacimiento del inodo del archivo, si está disponible.fuente
ejemplo:
En este caso, eliminará todos los archivos que comienzan con "ORA_XEO" con más de 15 días.
fuente
rm -rf
, el primer comando eliminaría todo lo contenido en cualquier directorio que sea anterior a esos 15 días. (Además, ¿por qué el paréntesis-name
?)example.jar
- se eliminaráexample.cp
- se eliminaráexample.tar
- no se eliminaráfind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
, debe usar el-daystart
modificador para forzar el-mtime
valor hasta la medianoche.