Ich kann mir vorstellen, dass dies als 1-Liner möglich ist, aber es schien etwas umständlich zu sein. findvids.sh
Deshalb habe ich ein Skript erstellt, um das Starten und Bearbeiten zu vereinfachen, und es so genannt. Das hat bei mir funktioniert.
Hinweis: Ich habe möglicherweise nicht ALLE Videodateitypen behandelt, aber ich bin sicher, dass ich die meisten davon habe. Eine bemerkenswerte Ausnahme ist .mkv, da dies das Zielformat für das Projekt ist und ich die bereits verarbeiteten Dateien nicht finden muss. Es sollte sehr einfach sein, dem Skript zusätzliche Formate (Erweiterungen) hinzuzufügen, die Ihren Anforderungen entsprechen, indem Sie das Muster untersuchen und entsprechend anpassen, während die Anführungszeichen am Anfang und Ende des Ausdrucks beibehalten werden. Beachten Sie, dass Dateien, für die Sie keine Leseberechtigung haben, nicht gefunden werden.
#!/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$"
Bearbeiten basierend auf Kommentar: Das $
am Ende der Erweiterung bedeutet, dass der Suchbegriff am Zeilenende gefunden werden muss. Wenn wir stattdessen den Zeilenanfang abgleichen möchten, verwenden wir ihn ^
vor dem Begriff, den wir abgleichen möchten. Diese Anker finden Sie hier näher erläutert .
Ich habe einen Geschwindigkeitsvergleich mit locate durchgeführt und die Ergebnisse waren:
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
Unerwartet zu finden ist schneller. Ich werde diesen Ansatz verwenden.
Bearbeiten: Weitere Tests zeigen an, dass das Auffinden auf einem anderen Computer schneller war. Ich denke, meine anfänglichen Geschwindigkeitstestergebnisse waren aufgrund von Caching nicht gut.
Quellen:
man find
man grep
/programming/7190565/unix-find-multiple-file-types