Я думаю, це можна зробити як 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$"
Редагування на основі коментарів:$
в кінці означає розширення, термін пошуку повинен бути знайдений в кінці рядка. якби ми хотіли відповідати початку рядка, замість цього ми використали б ^
до терміна, який ми маємо намір узгодити. Ви можете знайти ці анкери, пояснені більш докладно тут.
Я зробив порівняння швидкості використання локації, і результати були:
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
vs.
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