Как исключить файлы размером более 500 мегабайт из bash? - PullRequest
0 голосов
/ 18 января 2020

Итак, моя цель - преобразовать все файлы, которые находятся в определенном каталоге с помощью ffmpeg, но не те, которые меньше, скажем, 500 мегабайт?

То, что я до сих пор составлял:

#!/bin/bash
mkdir converted
if [[ $(find -type f -size +500000) ]]; then
for i in *.mp4;
do ffmpeg -n -i "$i" -f mp4 -c:a aac -c:v libx265 -preset medium -crf 23 "converted/${i%}";done
fi

Скрипт вида работ. ffmpeg запускается, но он также конвертирует mp4, которые меньше, чем размер +500000. Я не очень хорошо разбираюсь в сценариях. Я только начал, но я считаю, что я знаю, где ошибка. Предложение if указывает ffmpeg запускаться, если в каталоге есть определенные файлы, размер которых превышает x, но не указывает ffmpeg исключать эти файлы, верно? Заранее спасибо!

1 Ответ

0 голосов
/ 18 января 2020

Я сделал это.

    #!/bin/bash
    mkdir converted
    for var in *.mp4
    do
    FILESIZE=$(stat -c%s "$var")
    if [ "$FILESIZE" -lt 500000000 ]
    then
    echo "$var is smaller than 500MB";
    else
    ffmpeg -n -i "$var" -f mp4 -c:a aac -c:v libx265 -preset medium -crf 23 "converted/${var%}";
    fi
    done
...