Mantenga solo las dos últimas carpetas en el directorio

Mantenga solo las dos últimas carpetas en el directorio

Tengo un directorio que tiene las siguientes carpetas.

Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210

Quiero conservar sólo las dos últimas carpetas y eliminar el resto. La carpeta tiene este formato: Data-YYYY-MM-DD-HHMM.

¿Existe alguna forma de comparar los nombres de las carpetas, conservar la última y eliminar el resto? Puedo acomodar esto más adelante en mi script de shell.

Respuesta1

Supongo que el nombre de los directorios es también la marca de tiempo de su creación. Si es así entonces puedes usarespara enumerar archivos según el tiempo de modificación de los directorios.

Esto enumerará los directorios en el orden del más nuevo primero.

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt 

Para eliminar todos los directorios excepto los 2 archivos más nuevos: –

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r

Nota:Primero, pruébelo en un entorno de prueba y confirme minuciosamente si esto es exactamente lo que desea realizar y también si ese script funciona con su conjunto de directorios.

información relacionada