Hay 3 o 4 archivos en el mismo directorio que se muestra a continuación;
AAA.360p.mp4
AAA.450p.mp4
AAA.720p.mp4
AAA.1080p.mp4
Los nombres de esos archivos son casi los mismos excepto la expresión de la resolución del cuadro.
(AAA es un ejemplo de nombre de archivo. Para presentar que esos nombres de archivo son los mismos excepto la resolución de fotograma).
Y hay varios puntos entre AAA.
Por ejemplo, el nombre del archivo es así;
Interesting.Comedy.E10.200406.450p.mp4
Interesting.Comedy.E10.200406.720p.mp4
Interesting.Comedy.E10.200406.1080p.mp4
Los tamaños de cada archivo son diferentes.
(tamaño de archivo: 360p < 450p < 720p < 1080p) → Siempre es cierto.
Me gustaría conservar solo un archivo, el de mayor tamaño, y eliminar todos los demás archivos.
La ubicación del directorio es/volume1/video/
Se ejecutará el comando solo en Synology. (para usar el programador de tareas en el panel de control)
Si me lo explica, incluya la ruta del directorio en mi caso como se indica arriba.
(porque no puedo aplicar el código que me recomiendas por falta de comprensión. Pido disculpas)
Respuesta1
El siguiente código le resultará útil; sin embargo, puede crear una copia de los archivos y probar ese directorio primero.
#!/bin/bash
var=`find /volume1/video/ -printf '%s %p\n'| sort -nr | head -n 1 | awk '{ print $2 }'`
largestfilename=`echo $var | rev | cut -d"/" -f1 | rev`
for i in `ls -S /volume1/video/`
do
if [ ! $i == $largestfilename ]
then
rm -f /volume1/video/$i
fi
done
Respuesta2
LARGEST=$(ls -S /volume1/video/* | head -1)
ls /volume1/video/* | grep -v "$LARGEST" | xargs -d '\n' rm
La primera línea ejecuta un comando para enumerar todos los archivos /volume1/video/
ordenados por tamaño y canaliza esa lista head
para identificar el primero. La salida de ese comando luego se almacena en una variable llamada $LARGEST
.
La segunda línea enumera todos los archivos /volume1/video/
nuevamente, busca el nombre del más grande y elimina el resto.
Editar: se agregó el indicador -d a xargs para tener en cuenta posibles espacios en blanco en los nombres de archivos. Veresta respuestapara más información.