Immagino che questo potrebbe essere fatto come 1-liner ma mi è sembrato un po 'ingombrante, quindi ho creato una sceneggiatura per facilitare l'avvio e la modifica e l'ho chiamato findvids.sh
Questo è ciò che ha funzionato per me.
Nota: potrei non aver coperto TUTTI i tipi di file video, ma sono sicuro di averne la maggior parte. Una notevole eccezione è .mkv in quanto questo è il formato di destinazione per il progetto e non ho bisogno di trovare i file che sono già stati elaborati. Dovrebbe essere molto semplice aggiungere ulteriori formati (estensioni) allo script per soddisfare le tue esigenze esaminando il modello e regolando di conseguenza mantenendo le virgolette all'inizio e alla fine dell'espressione. Nota che i file che non hai il permesso di leggere non saranno trovati.
#!/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$"
Modifica in base a un commento: Il $
alla fine degli significa estensione che il termine di ricerca deve essere trovato alla fine della riga. se volessimo corrispondere all'inizio della riga invece utilizzeremmo ^
prima del termine che intendiamo corrispondere. Puoi trovare queste ancore spiegate in modo più dettagliato qui.
Ho fatto un confronto di velocità con l'utilizzo di Locate e i risultati sono stati:
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
La ricerca inaspettata è più veloce. Userò questo approccio.
Modifica: ulteriori test indicano che individuare era più veloce su una macchina diversa. Penso che i miei risultati iniziali del test di velocità fossero a castello a causa della memorizzazione nella cache.
fonti:
man find
man grep
/programming/7190565/unix-find-multiple-file-types