Обычно я использую VLC для просмотра фильмов с внешними файлами субтитров. Иногда тайминги в файле немного сбиваются, но для меня это всегда было проблемой с файлами, а не с VLC.
Что вы имеете в виду под «теряет через некоторое время»? Субтитры перестают отображаться или они не синхронизируются с видео?
Вы можете использоватьfind
:
find. -name "*_*_*" -not -name "*.*"
Это также будет искать в подкаталогах. Если вы этого не хотите, добавьте -maxdepth 1
и, возможно, -type f
, если вам нужны только обычные файлы:
find. -maxdepth 1 -type f -name "*_*_*" -not -name "*.*"
Добавьте -printf "%P\n"
, чтобы избавиться от предыдущего ./
.
С ksh
, bash -O extglob
или zsh -o kshglob
с использованием некоторых двойных -отрицаний (здесь предполагается, что вы также хотите исключить файлы с 3 или более символами подчеркивания):
printf '%s\n' !(!(*_*_*)|*_*_*_*|*.*)
С zsh -o extendedglob
и его ~
, кроме оператора :
printf '%s\n' *_*_*~(*_*_*_*|*.*)
или используя родной оператор отрицания zsh
:
printf '%s\n' ^(^*_*_*|*_*_*_*|*.*)
Если вам по-прежнему нужны файлы с более чем двумя символами подчеркивания, это просто !(!(*_*_*)|*.*)
, *_*_*~*.*
или ^(^*_*_*|*.*)
вместо вышеуказанного соответственно.
Другими подходами могут быть!(*[._]*)_!(*[._]*)_!(*[._]*)
(заменить [_.]
на .
, чтобы разрешить 3 или более символов подчеркивания ).
Упрощенно, в bash (или оболочках, поддерживающих массивы:
files=(???_???_???)
Здесь используется подстановочный символ ?
для подбора файлов с именами, как вы показали, с 3 символами, подчеркиванием, 3 символами, подчеркиванием, затем 3 символами. Это может быть сорвано, если у вас есть имя файла, такое как xyz_qrs_t.1
.
Чуть более изысканным было бы:
files=([^._][^._][^._]_[^._][^._][^._]_[^._][^._][^._])
... который использует синтаксис[^... ]
подстановки . Каждый [^._]
запрашивает один символ, который не является точкой или символом подчеркивания. Смешаны два символа подчеркивания, разделяющие три партии по три [^._]
.
Прокрутите их с помощью:
for f in "${files[@]}"; do printf "File: %s\n" "$f"; done