Find иногда не находит правильное имя файлаLinux

Ответить Пред. темаСлед. тема
Anonymous
 Find иногда не находит правильное имя файла

Сообщение Anonymous »

У меня есть каталоги с множеством файлов MKV со встроенными субтитрами .ass.
Мой видеоплеер не поддерживает формат .ass, поэтому мне нужно извлечь субтитры .ass и преобразовать их в формат .srt. .
И, конечно, я хочу сделать это с помощью сценария.
Это то, что я сделал на данный момент (по большей части это сценарий, который я нашел где-то еще и настроил для моих нужд).

Код: Выделить всё

#!/bin/bash
# Convert subtitles from each MKV file in the given directory from .ass to .srt

# If no directory is given, work in local dir
if [ "$1" = "" ]; then
DIR="."
else
DIR="$1"
fi
echo "Directory $DIR"

# Get all the MKV files in this dir and its subdirs
find "$DIR" -type f -name '*.mkv' | sort | while read filename
do
# Get base name for subtitle
subtitlename=${filename%.*}

# Skip processed files
if [ -e "$subtitlename.srt" ]; then
echo "Skipping $filename"
continue
fi

# If no tracknumber is given, find out which tracks contain the subtitles
if [ "$2" = "" ]; then
TN=`mkvmerge -i "$filename" | grep 'subtitles' | head -1 | egrep -o "[0-9]{1,2}"`
else
TN="$2"
fi

# Extract the track to a .ass file and convert to a .srt file
echo "Processing $filename"
mkvextract tracks "$filename" $TN:"$subtitlename.ass" && \
ffmpeg -i "$subtitlename.ass" "$subtitlename.srt" && \
rm "$subtitlename.ass"
done
Моя проблема с этим скриптом заключается в том, что он может обрабатывать только «нечетные» файлы, пропуская «четные» файлы, поскольку не может получить правильное имя файла для последних.
Это соответствующая часть журнала:

Код: Выделить всё

Processing ./S01E01.mkv
Processing /S01E02.mkv
Error: (mkvextract) This file could not be opened or parsed.
Processing ./S01E03.mkv
Processing /S01E04.mkv
Error: (mkvextract) This file could not be opened or parsed.
Как видите, функция find может получить правильное имя файла для нечетных файлов (они начинаются с точки), но не может сделать то же самое с даже файлы (они начинаются с косой черты), поэтому mkvextract не работает.
Почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/782 ... t-filename
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python ETree.find не находит сложный путь
    Гость » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Почему «gnu find» с -ctime не находит файл?
    Anonymous » » в форуме Linux
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Проверка regex matchter.find () не находит точный ключ и значения
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как Selenium находит кнопку в графическом браузере, но не находит ее в безголовом режиме с помощью ChromeDriver?
    Anonymous » » в форуме Python
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous
  • Maven не находит импортированный класс из другого модуля, но Intellij находит
    Anonymous » » в форуме JAVA
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»