Проблема в том, что [
и ]
являются универсальными символами. Например, рассмотрим этот файл:
ba[r].mkv
При запуске скрипта в этом файле $filename
будет :ba[r]
, поэтому ваша команда find
будет:
find. -name 'ba[r]*pt-BR.srt*'
Поскольку [r]
является классом однобуквенных символов, это означает r
. Таким образом, ваша команда ищет имя файла, начинающееся с ba
, затем r
, затем любой символ (с )и pt-BR.srt
и снова любые символы. Вам нужно выйти за скобки:
find. -name 'ba\[r\]*pt-BR.srt*'
Самый простой способ сделать это — использовать printf
и %q
. Так что просто измените эту строку:
filename="$(basename "$file".mkv)"
К этому:
filename=$(printf '%q' "$(basename "$file".mkv)")
Многие компании не предоставляют поддержку для своих принтеров, например, сканер Canon G 2000 не поддерживает Linux для своего сканера.
Так что впереди еще долгий путь. Покупайте и бережно храните свои драйверы.