GNU/Linux >> Tutoriales Linux >  >> Linux

Bash script para eliminar el archivo más antiguo de una carpeta

Como señaló Kos, es posible que no sea posible conocer el archivo más antiguo (según la fecha de creación).

Si el tiempo de modificación es bueno para usted y si el nombre del archivo no tiene una nueva línea:

rm "$(ls -t | tail -1)"

Parece que está bien eliminar el archivo modificado más antiguo en lugar del archivo creado más antiguo;

Considero que este es el método más seguro, ya que no se interrumpirá en los nombres de archivo que contengan líneas nuevas:

stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
  • stat --printf='%Y %n\0' * :imprime una lista separada por NUL de la hora de la última modificación seguida de la ruta del archivo para cada archivo en el directorio de trabajo actual;
  • sort -z :ordena la lista usando NUL como separador de línea;
  • sed -zn '1s/[^ ]\{1,\} //p' :elimina la primera aparición de una cadena que contiene uno o más caracteres, no un espacio, seguido de un espacio de la primera línea terminada en NUL y la imprime;
  • xargs -0 rm :pasa la línea terminada en NUL a rm como argumento;
% touch file1
% touch file2
% stat -c '%Y %n' *            
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm 
% ls
file2

Linux
  1. ¿Se puede conectar un script Bash a un archivo?

  2. ¿Cómo eliminar las líneas que aparecen en el archivo B de otro archivo A?

  3. Abra Vim desde dentro de un script de shell Bash

  4. Variable en Bash Script que mantiene su valor desde la última vez que se ejecutó

  5. Eliminar una determinada línea del archivo de historial de Bash

35 ejemplos de secuencias de comandos Bash

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Cómo quitar (^M) caracteres de un archivo en Linux

Ejecutar script bash desde URL

archivo de creación atómica si no existe desde el script bash

bash + leer variables y valores del archivo mediante script bash