Como posso encontrar todos os arquivos de vídeo no meu sistema?

7

Eu tentei usar a pesquisa Unity Lens File para *.* e filtrar por Last Modified = All, Type = Videos e Size = All, mas não encontrei nada, embora eu saiba que existem alguns arquivos .3gp na minha pasta Pictures. Eu sei que tenho vários arquivos de vídeo em outra unidade montada no sistema de arquivos também. Eu compilei uma lista de prováveis extensões e tentei várias iterações do comando find utilizando-as com find ./ -name "* .ext" -o (etc, etc, ad nauseum) sem sorte alguma. Qual é a solução?

    
por Elder Geek 02.11.2016 / 16:21

2 respostas

6

Alternativa: pesquise no arquivo :

sudo find . -type f -exec file -N -i -- {} + | grep video

ou se você quiser apenas os nomes dos arquivos ...

sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'

-N, --no-pad : não insira nomes de arquivo

-i, --mime : faz com que o comando file envie sequências do tipo mime em vez das mais tradicionais legíveis para humanos. Assim pode dizer 'text / plain; charset = us-ascii 'em vez de' texto ASCII '. Para que esta opção funcione, o arquivo muda a forma como ele lida com arquivos reconhecidos pelo próprio comando (como muitos dos tipos de arquivos de texto, diretórios, etc.) e faz uso de um arquivo 'mágico' alternativo. (Veja a seção FILES, abaixo).

A seção FILES aponta para:

% bl0ck_qu0te%

file é lentowwwwwwwwwwwwwwww embora (ele abrirá todos os arquivos encontrados), mas tem a vantagem de não ser necessário incluir todas essas extensões.

Usando o locate:

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
    
por Rinzwind 02.11.2016 / 16:33
3

Eu imagino que isso poderia ser feito como um 1-liner, mas parecia um pouco complicado, então eu criei um script para facilitar o lançamento e a edição e o chamei de findvids.sh . Isso é o que funcionou para mim.

Observação: talvez eu não tenha coberto TODOS os tipos de arquivo de vídeo, mas tenho certeza de que tenho a maioria deles. Uma exceção notável é o .mkv, já que é o formato de destino do projeto e não preciso encontrar os arquivos que já foram processados. Deve ser muito simples adicionar formatos (extensões) adicionais ao script para atender às suas necessidades, examinando o padrão e ajustando-se adequadamente, mantendo as aspas no início e no final da expressão. Observe que os arquivos que você não tem permissão para ler não serão encontrados.

#!/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$"

Eu fiz uma comparação de velocidade para usar o locate e os resultados foram:

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

Inesperadamente, é mais rápido. Eu vou estar usando essa abordagem.

Fontes:

man find

man grep

link

    
por Elder Geek 02.11.2016 / 16:21