Wyobrażam sobie, że można to zrobić jako 1-liniowy, ale wydawało mi się to trochę kłopotliwe, więc stworzyłem skrypt ułatwiający uruchamianie i edycję i nazwałem go findvids.sh
To właśnie działało dla mnie.
Uwaga: Być może nie obejmowałem WSZYSTKICH typów plików wideo, ale jestem pewien, że mam większość z nich. Jednym godnym uwagi wyjątkiem jest .mkv, ponieważ jest to format docelowy projektu i nie muszę szukać plików, które zostały już przetworzone. Dodanie dodatkowych formatów (rozszerzeń) do skryptu powinno być bardzo proste, aby dopasować je do twoich potrzeb, analizując wzór i odpowiednio dostosowując, zachowując cudzysłowy na początku i na końcu wyrażenia. Pamiętaj, że pliki, których nie masz uprawnień do odczytu, nie zostaną znalezione.
#!/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$"
Edycja na podstawie komentarza:$
na końcu oznacza, że przedłużenie terminu wyszukiwania musi się znaleźć na końcu linii. gdybyśmy chcieli dopasować początek linii, użylibyśmy ^
przed terminem, który zamierzamy dopasować. Możesz znaleźć te kotwice wyjaśnione bardziej szczegółowo tutaj.
Zrobiłem porównanie prędkości przy użyciu locate, a wyniki były następujące:
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
Nieoczekiwanie znalezienie jest szybsze. Będę używał tego podejścia.
Edycja: dalsze testy wskazują, że lokalizacja była szybsza na innym komputerze. Myślę, że moje początkowe wyniki testu prędkości były piętrowe z powodu buforowania.
Źródła:
man find
man grep
/programming/7190565/unix-find-multiple-file-types