J'ai essayé d'utiliser le fichier d'objectif Unity pour rechercher *.*
et filtrer par Last Modified = All, Type = Videos et Size = All mais rien trouvé, bien que je sache qu'il existe des fichiers .3gp dans mon dossier Images. Je sais que j'ai également de nombreux fichiers vidéo sur un autre lecteur monté sur le système de fichiers. J'ai compilé un liste des extensions probables et j'ai essayé de nombreuses itérations de la commande find
en les utilisant avec find ./ -name "* .ext" -o (etc, etc, ad nauseum) sans aucune chance. . Quelle est la solution?
Alternative: recherche sur fichier :
Sudo find . -type f -exec file -N -i -- {} + | grep video
ou si vous voulez seulement les noms de fichiers ...
Sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'
-N, --no-pad
: Ne pas tamponner les noms de fichiers
-i, --mime
: force la commande file à générer des chaînes de type mime plutôt que des chaînes plus classiques lisibles par l'homme. Ainsi, il peut dire 'text/plain; charset = us-ascii 'plutôt que' texte ASCII '. Pour que cette option fonctionne, le fichier change la façon dont il traite les fichiers reconnus par la commande elle-même (comme de nombreux types de fichiers texte, les répertoires, etc.) et utilise un fichier alternatif 'magique'. (Voir la section FILES ci-dessous).
La section FILES pointe vers:
Fichiers
/usr/share/misc/magic.mgc
Liste de magie compilée par défaut.
/usr/share/misc/magic
Répertoire contenant les fichiers magiques par défaut.
file
est lentewwwwwwwwwwwwwwww cependant (il ouvrira tous les fichiers trouvés) mais a l’avantage de ne pas avoir besoin d’ajouter toutes ces extensions.
En utilisant localiser:
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
J'imagine que cela pourrait être fait en 1 ligne mais cela semblait un peu lourd, j'ai donc créé un script pour faciliter le lancement et l'édition et je l'ai appelé findvids.sh
C'est ce qui a fonctionné pour moi.
Remarque: je n’ai peut-être pas couvert TOUS les types de fichiers vidéo, mais je suis certain d’en avoir la plupart. .Mkv constitue une exception notable, car il s’agit du format cible du projet et je n’ai pas besoin de rechercher les fichiers déjà traités. Il devrait être très simple d’ajouter des formats (extensions) supplémentaires au script en fonction de vos besoins en examinant le modèle et en l’ajustant en conséquence, tout en conservant les guillemets au début et à la fin de l’expression. Notez que les fichiers que vous n’avez pas l’autorisation de lire ne seront pas trouvés.
#!/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$"
Editer à partir d'un commentaire: Le $
à la fin de l'extension signifie que le terme recherché doit être trouvé à la fin de la ligne. si nous voulions faire correspondre le début de la ligne, nous utiliserions plutôt ^
avant le terme recherché. Vous pouvez trouver ces ancres expliquées plus en détail ici.
J'ai comparé la vitesse à l'aide de Locate et les résultats sont les suivants:
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
De façon inattendue, trouver est plus rapide. Je vais utiliser cette approche.
Edit: des tests supplémentaires indiquent que la localisation a été plus rapide sur une autre machine. Je pense que les résultats de mes tests de vitesse initiaux étaient superflus à cause de la mise en cache.
Sources:
man find
man grep
https://stackoverflow.com/questions/7190565/unix-find-multiple-file-types