для цикла найти, как рекурсивные каталоги и пробелы [дубликат]

Я пытаюсь написать сценарий для проверки кодека видеофайла (с помощью ffprobe) и соответствующим образом их кодировать (с помощью HandBrakeCLI) .

Directory
mp4
>> Sub-Directory
>> mp4
>> >> Sub-sub Directory
>> >> mp4

Одна из проблем сценария заключается в том, что он не может создавать рекурсивные подкаталоги. Я попытался изменить

for video_file in $(find . -type f -name '*.mp4')

, строка выше, вероятно, неверна, так как я тестировал несколько кодов, читая AskUbuntu и пробуя их. Не могу вспомнить, что заставило его работать, но в конце концов он не смог справиться с пробелами в файлах / каталогах.

Скрипт, который работает для текущего рабочего каталога, но не для рекурсивных каталогов:

#!/bin/bash
for video_file in ./*.mp4;
do
## using ffprobe to check video codec
CHECK_FILE=`ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$video_file"`
if [ $CHECK_FILE = hevc ]
then
    echo "$video_file is hevc/h265, skipping"
else
    # remove .mp4 extension
    tempname="${video_file%.*}"_tmp.mp4
    newname="${video_file%.*}"_hevc.mp4
    HandBrakeCLI -i "$video_file" -o "$tempname"
    mv -v "$tempname" "$newname"
    echo "Moving on to next available file"
fi
done

Благодарю, если кто-нибудь может указать путь :)

2
задан 17 August 2018 в 18:09

1 ответ

Установите это shopt -s globstar в Вашем сценарии изменяют Ваш для цикла к;

shopt -s globstar
for video_file in ./**/*.mp4;

Для наблюдения, что может быть включено или прочь или установлено в сценарии удара так:

shopt

autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
compat42        off
compat43        off
complete_fullquote  on
direxpand       off
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         on
extquote        on
failglob        off
force_fignore   on
globasciiranges off
globstar        on
gnu_errfmt      off
histappend      on
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
inherit_errexit off
interactive_comments    on
lastpipe        off
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell    off
shift_verbose   off
sourcepath      on
xpg_echo        off
3
ответ дан 2 December 2019 в 02:42

Другие вопросы по тегам:

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