На этот вопрос уже есть ответ здесь :
Я пытаюсь написать сценарий для проверки кодека видеофайла (с помощью 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
Благодарю, если кто-нибудь может указать путь :)
Установите это 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