Вопрос или проблема
Я в настоящее время запускаю plex на Beelink с Ubuntu, и на сегодняшний день все файлы, связанные с каждым фильмом (файл фильма, сопутствующие изображения и субтитры), находятся в одной родительской директории. В большинстве случаев это нормально, но для фильмов с несколькими субтитрами это может вызвать путаницу. Например:
/Movies
/Avatar (2009)
Avatar (2009).mkv
Avatar (2009).eng.srt
Avatar (2009).en.forced.ass
Avatar (2009).en.sdh.srt
Avatar (2009).de.srt
Avatar (2009).de.sdh.forced.srt
Кажется, что теперь plex находит субтитры, помещенные в папку “subs” или “subtitles”. Поэтому, чтобы навести порядок, как я могу рекурсивно пройтись по родительской директории фильмов и для каждой отдельной папки фильма переместить любые файлы субтитров в папку “subtitles” следующим образом?
/Movies
/Avatar (2009)
Avatar (2009).mkv
/Subtitles
Avatar (2009).eng.srt
Avatar (2009).en.sdh.srt
Avatar (2009).de.srt
Avatar (2009).de.sdh.forced.srt
Для телешоу может быть несколько уровней под родительской папкой, например:
**Старое:**
/TV Shows
/Игра престолов
/Сезон 02
Игра престолов - s02e03.mp4
Игра престолов - s02e03.eng.srt
Игра престолов - s02e03.en.forced.srt
**Новое:**
/TV Shows
/Игра престолов
/Сезон 01
Игра престолов - s01e03.mp4
Игра престолов - s01e04.mp4
/Subtitles
Игра престолов - s01e03.eng.srt
Игра престолов - s01e04.eng.srt
/Сезон 02
Игра престолов - s02e03.mp4
/Subs
Игра престолов - s02e03.eng.srt
Игра престолов - s02e03.en.forced.srt
Еще лучше было бы иметь возможность перемещать файлы только в том случае, если они не находятся уже в папке subtitles…
find . -type f -name '*.srt' -printf '%h\0' | sort -zu | while IFS= read -d '' -r d; do
printf "Создание '%s'...\n" "${d}/Subtitles"
printf "Перемещение '%s' в '%s'...\n" "${d}/*.srt" "${d}/Subtitles"
done
Команда найдет путь к каждому файлу .srt
в текущем рабочем каталоге рекурсивно, напечатает только его базовое имя и отфильтрует дубликаты, создавая директорию “Subtitles” внутри каждого полученного пути и перемещая каждый файл .srt
на его уровень внутрь.
Она справится с файлами .srt
, расположенными на любой глубине текущего рабочего каталога, а также с директорией “TV Shows”.
Команда выполнит пробный запуск; если вывод будет хорошим, выполните фактическую команду:
find . -type f -name '*.srt' -printf '%h\0' | sort -zu | while IFS= read -d '' -r d; do
mkdir -p "${d}/Subtitles"
mv "${d}"/*.srt "${d}/Subtitles"
done
% tree -a .
.
├── foo
│ └── bar
│ ├── baz
│ └── sub.srt
└── sub.srt
4 директории, 2 файла
% find . -type f -name '*.srt' -printf '%h\0' | sort -zu | while IFS= read -d '' -r d; do
mkdir -p "${d}/Subtitles"
mv "${d}"/*.srt "${d}/Subtitles"
done
% tree -a .
.
├── foo
│ └── bar
│ ├── baz
│ └── Subtitles
│ └── sub.srt
└── Subtitles
└── sub.srt
6 директорий, 2 файла
Ответ или решение
Рекурсивное перемещение файлов субтитров в подпапки
Введение
Если вы используете Plex на Ubuntu и сталкиваетесь с проблемой организации файлов субтитров, то перестановка этих файлов в отдельные папки может значительно упростить управление медиатекой. Ниже приведено пошаговое руководство по рекурсивному перемещению файлов субтитров в отдельные папки "Subtitles" или "subs" для фильмов и телешоу, основываясь на схеме папок, описанной в вашей проблеме.
Проблема
Как видно из вашего описания, структура папок с фильмами и телесериалами может стать неупорядоченной из-за наличия множества файлов субтитров в одной папке. Plex предпочитает находит субтитры в папках "Subtitles" или "subs", и создание этих папок поможет улучшить восприятие и работу с вашей медиатекой.
Подход
Мы будем использовать команду find
для рекурсивного поиска всех файлов субтитров в формате .srt
и последующего их перемещения в соответствующие подпапки. Следующие команды сделают это автоматически для всех папок в указанной директории.
Шаги
-
Откройте терминал на вашем Beelink под управлением Ubuntu.
-
Перейдите в директорию с фильмами или телешоу. Например:
cd /path/to/Movies
-
Запустите команду для предварительного просмотра (dry run):
find . -type f -name '*.srt' -printf '%h\0' | sort -zu | while IFS= read -d '' -r d; do printf "Creating '%s/Subtitles'...\n" "${d}" printf "Moving '%s/*.srt' to '%s/Subtitles'...\n" "${d}" "${d}" done
Эта команда выведет список всех папок, где будут созданы подпапки "Subtitles", а также где будут перемещены файлы
.srt
. Пожалуйста, проверьте, выглядит ли вывод правильно. -
Выполнение перемещения:
Если вывод был удовлетворительным, выполните следующую команду для фактического перемещения файлов:find . -type f -name '*.srt' -printf '%h\0' | sort -zu | while IFS= read -d '' -r d; do mkdir -p "${d}/Subtitles" mv "${d}"/*.srt "${d}/Subtitles" done
Описание команд
find . -type f -name '*.srt' -printf '%h\0'
: Находит все файлы с расширением.srt
и выводит их директории.sort -zu
: Сортирует пути и удаляет дубликаты.while IFS= read -d '' -r d; do ... done
: Цикл, который обрабатывает каждый найденный путь.mkdir -p "${d}/Subtitles"
: Создаёт папку "Subtitles", если она не существует.mv "${d}"/*.srt "${d}/Subtitles"
: Перемещает все файлы субтитров в созданную папку.
Заключение
Теперь ваши файлы субтитров будут организованы в отдельных папках "Subtitles", что существенно упростит управление мультимедийным контентом на Plex. Эта схема также будет работать для телешоу, включая вложенные папки. Убедитесь, что вы выполнили команды в правильной директории и сделали резервные копии данных, если это необходимо.
Систематизация вашей медиатеки не только помогает в управлении файлами, но и улучшает общий опыт использования Plex.