Как вывести список всех файлов размером менее 1080p

Установщик Debian покажет 5 ГБ как степень 1000 (префикс SI base-10), что означает, что пользователь может сразу узнать 5 ГБ составляет 5 * 1000 * 1000 * 1000 байт .

Перед установкой

Буквально вчера на моем старом тестовом компьютере был установлен Debian 8.2 Xfce для настольных ПК. На машине установлен жесткий диск емкостью 60 ГБ, который я настроил вручную для создания основных разделов подкачки объемом 2,0 ГБ и 10,0 ГБ ext4 . Оставшееся свободное место на диске не изменится.

Debian Jessie partition setup

После установки

я установил и запустил GNOME Disks для просмотра разделов диска. Разделы, созданные установщиком Debian, имеют одинаковый размер, как показано на скриншоте ниже.

GNOME Disks viewing partition

Что показывает ГБ или ГиБ

Важно использовать приложения, следующие за согласованными префиксами единиц . С другой стороны, некоторые приложения не всегда используют префикс SI base-10 для отображения размера дисков. Например, GParted следует согласованным префиксам единиц измерения, но использует единицы измерения IEC base-2 для отображения размера дисков. Некоторые инструменты командной строки могут даже предоставлять опции для использования либо префикса IEC base-2 (KiB, MiB, GiB ...), либо единицы префикса SI base-10 (kB, MB, GB ...).

Для быстрого сравнения:

  • Программа установки Debian (префикс SI base-10): 2.0 ГБ swap 10,0 ГБ ext4
  • диски GNOME (префикс SI base-10): 2,0 ГБ swap 10,0 ГБ ext4
  • GParted (префикс IEC base-2): 1,86 ГиБ своп 9,31 ГиБ ext4

TL; DR Пользователи Linux могут предположить, что 1 КБ составляет 1000 байт если не указано иное. Чтобы избежать путаницы, используйте приложения, которые следуют согласованным префиксам единиц измерения: префикс IEC base-2 использует прописные буквы K в KiB ; Префикс SI base-10 использует строчные буквы k в kB .

1
01.05.2019, 23:02
2 ответа

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

ffprobe -v error -select_streams v:0 -show_entries stream=width -of default=nw=1:nk=1 input.mp4

И это даст вам результат, подобный

1280

и тогда вы сможете решить, что делать с этим видео

2
27.01.2020, 23:30
exiftool -q -r -if '$MIMEType =~ m{^video/} and
                    $ImageHeight < 1080 and
                    print "$Directory/$FileName\0" and 0'. |
  xargs -r0 echo rm -f

(при условии GNU xargsили совместимости ).

Будут удалены все видео, высота изображения которых меньше 1080 пикселей (, если вы рекурсивно удалитеecho)в текущем каталоге. Это предполагает, что имена файлов (должным образом )закодированы в UTF -8 (, хотя см. параметр -charsetдля других кодировок ).

Вместо передачи в xargs rmвы также можете сохранить в файле (> list), чтобы сначала проверить этот список:

xargs -r0a list ls -ldrS

Если всё в порядке:

xargs -r0a list rm

Или сохраните информацию в формате JSON, чтобы у вас была вся необходимая информация в легко читаемом и разборчивом формате:

exiftool -q -r -j -if '$MIMEType =~ m{^video/}' \
  -ImageWidth -ImageHeight -VideoFrameRate -MIMEType. > list.json

Затем просмотрите этот список и удалите его по некоторым критериям:

PERL_UNICODE= json_xs < list.json -t none -e '
  for (@{$_}) {
    unlink $_->{SourceFile} if
      $_->{ImageHeight} < 1080 || $_->{VideoFrameRate} < 60
  }'

(обратите внимание, что я обнаружил, что для файлов FLV это было Videoframerateвместо VideoFrameRate, вы можете остерегаться такого рода несоответствия ).

1
27.01.2020, 23:30

Теги

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