Я полагаю, что это можно сделать как 1-строчную строку, но это выглядело немного громоздко, поэтому я создал скрипт для простоты запуска и редактирования и назвал его. findvids.sh
Это то, что мне помогло.
Примечание. Возможно, я не охватил ВСЕ типы видеофайлов, но уверен, что большинство из них у меня есть. Одним заметным исключением является .mkv, так как это целевой формат для проекта, и мне не нужно находить файлы, которые уже были обработаны. Должно быть очень просто добавить дополнительные форматы (расширения) в сценарий в соответствии с вашими потребностями, изучив шаблон и изменив его соответствующим образом, сохранив кавычки в начале и конце выражения. Обратите внимание, что файлы, у которых нет разрешения на чтение, не будут найдены.
#!/bin/bash
#This script is intended to find virtually all video file formats.
find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
Редактирование на основе комментариев:$
в конце означает расширение, термин поиска должен быть найден в конце строки. если бы мы хотели сопоставить начало строки, вместо этого мы использовали бы ^
раньше термина, который намеревались сопоставить. Вы можете найти эти якоря, объясненные более подробно здесь.
Я сделал сравнение скорости с использованием locate, и результаты были:
time locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v
real 0m8.887s
user 0m5.814s
sys 0m0.052s
против
time find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp4$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
real 0m2.795s
user 0m0.657s
sys 0m1.115s
Неожиданно найти быстрее. Я буду использовать этот подход.
Изменить: дальнейшее тестирование показывает, что поиск был быстрее на другом компьютере. Я думаю, что мои начальные результаты теста скорости были ложными из-за кеширования.
Источники:
man find
man grep
/programming/7190565/unix-find-multiple-file-types