Мне нужно получить список имен файлов и пути вместе с продолжительностью файла. Все видео файлы. Некоторые файлы также находятся в подпапках. Мне нужен список, отсортированный по продолжительности. Моя цель - удалить файлы продолжительностью менее 2 минут. Могу ли я сделать это через терминал или графический интерфейс?
Вам не повезло без использования внешних программ, file videoname.xyz
не возвращает продолжительность видео. С другой стороны, avprobe (ffprobe) из пакета libav-tools делает!
Вам потребуется выполнить рекурсивный обход каталога (например, в Python), вызовите avprobe (через подпроцесс), проанализируйте длительность вывода и сохраните длину воспроизведения и имя файла в подходящей структуре.
это должно дать вам список mp4s менее 120 секунд в указанной папке, включая подпапки
find ~/pathtofolder -iname '*.mp4' -type f > vidfiles && while read f; do echo -n "$f: "; ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"; done < vidfiles | awk '$NF<120' > shortvids
Просто измените ~/pathtofolder
на ваше целевое местоположение.
Список будет в файле с именем shortvids
Я прошу прощения за не сортировку, но я не вижу необходимости, если единственными файлами в списке являются короткие видео.
Если вы хотите изменить продолжительность, ближе к концу измените '$NF<120'
на количество секунд. Например, '$NF<300'
будет означать « длительность менее 5 минут (или 300 секунд) »
, конечно, вы также можете найти длительности , превышающие или равным путем изменения знака т.е. <
- >
или =