Как сохранить только один файл самого большого размера и удалить все остальные файлы

зш -икслы:

ls -ltd -- **/*(/omf777[1,5])

Это выполняетls(длинный список l, снова отсортированный по времени модификации t, и с флагом -dдля отображения только каталога, а не его содержимого )в первых 5([1,5])] файлов, возвращаемых рекурсивным шаблоном zsh glob , который соответствует каталогам(/)с разрешениями 777 (f777), упорядоченными по времени модификации(om).

Обратите внимание, что скрытые файлы и каталоги игнорируются. Добавьте квалификатор Dglob, чтобы учесть их.

0
07.04.2020, 19:22
1 ответ

Приведенный ниже код будет вам полезен, однако вы можете сначала создать копию файлов и попробовать в этом каталоге.

#!/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
0
28.04.2021, 23:18

Теги

Похожие вопросы