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

11

Tentei usar o Unity Lens File para pesquisar *.*e filtrar por Última modificação = Tudo, Tipo = Vídeos e Tamanho = Tudo, mas não encontrei nada, embora eu saiba que existem alguns arquivos .3gp na minha pasta Imagens. Eu sei que tenho vários arquivos de vídeo em outra unidade montada no sistema de arquivos também. Compilei uma lista de extensões prováveis e tentei várias iterações do findcomando utilizando-as com find ./ -name "* .ext" -o (etc, etc, ad nauseum) sem nenhuma sorte. Qual é a solução?

Elder Geek
fonte
Eu não tentei, mas havia um artigo sobre OMG! Ubuntu sobre o aplicativo FSearch. Você pode querer conferir. omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad 2/16
@ Jo-ErlendSchinstad Obrigado pela sugestão, mas como estou obtendo meus resultados por meio da CLI em menos de 3 segundos, estou satisfeito com essa abordagem. Eu vou olhar para isso embora. :-)
Elder Geek
Mas, a menos que você entenda o comando, você o esquecerá. E se você entendeu os comandos, não teria feito a pergunta. Vamos melhorar o Ubuntu, facilitando as coisas para quem quer apenas fazer o trabalho. Você pode fazer isso adicionando aplicativos ou apontando as pessoas para aplicativos que já estão lá.
Jo-Erlend Schinstad
@ Jo-ErlendSchinstad Costumo começar a não entender o que obtenho por meio de pesquisas e análises. Eu acredito que essa abordagem é vital para o desenvolvimento. O processo de descoberta me levou a uma solução que eu escolhi compartilhar aqui ao criar um script e colocá-lo em ~ / bin. É improvável que eu esqueça e saiba onde procurar se eu o fizer. Como também está na minha resposta, qualquer pessoa com motivação também pode analisar e entender.
Elder Geek
Você está certo. Na verdade, não precisamos de desktops. Podemos fazer quase tudo usando linhas de comando. Mas se queremos crescer, devemos perceber que a maioria das pessoas não quer aprender esse tipo de coisa. Conheço desenvolvedores que nem conseguem descrever as diferenças entre a pilha e a pilha.
Jo-Erlend Schinstad

Respostas:

14

Alternativa: pesquisa 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 preencha nomes de arquivos

-i, --mime: Faz com que o comando file produza seqüências de caracteres do tipo MIME, em vez das legíveis por humanos mais tradicionais. Assim, pode dizer 'texto / simples; charset = us-ascii 'em vez de' texto ASCII '. Para que esta opção funcione, o arquivo altera a maneira como lida com os arquivos reconhecidos pelo próprio comando (como muitos dos tipos de arquivos de texto, diretórios etc.) e utiliza um arquivo 'mágico' alternativo. (Veja a seção ARQUIVOS, abaixo).


A seção FILES aponta para:

arquivos

/usr/share/misc/magic.mgc Lista compilada padrão de mágica.

/usr/share/misc/magic Diretório contendo arquivos mágicos padrão.


file é slowwwwwwwwwwwwwwwww (porém, ele abrirá todos os arquivos encontrados e encontra), mas tem a vantagem de que você não precisa adicionar todas essas extensões.


Usando localizar:

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
Rinzwind
fonte
Qual "seção FILES, abaixo"
Elder Geek
adicionado! estava oculto na página de manual: D
Rinzwind 2/16
Isso é estranho, eu teria esperado localizar a ser mais rápido, mas com o seu comando localizar eu chegar em tempo: 0m8.985s reais e com o meu comando find eu chegar em tempo: 0m2.595s reais
Elder Geek
11
Oh ... localizar faz todos os arquivos. Sua descoberta é de onde você está, não é?
Rinzwind 2/11/2016
Eu adicionei a opção -e que não teve muito impacto, mas o retorno de resultados para arquivos que já foram desativados não parecia útil. O tempo de sys concedido é muito menor para localizar, mas o tempo real para os resultados é tudo o que realmente me importa.
Elder Geek
5

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

Nota: 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 é .mkv, pois é o formato de destino do projeto e não preciso encontrar os arquivos que já foram processados. Deve ser muito simples adicionar formatos adicionais (extensões) ao script para atender às suas necessidades, examinando o padrão e ajustando-o de acordo, 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$"

Editar com base no comentário: A $no final dos significa extensão que o termo de pesquisa deve ser encontrada no fim da linha. se quiséssemos corresponder ao início da linha, usaríamos ^antes do termo que pretendemos corresponder. Você pode encontrar essas âncoras explicadas em mais detalhes aqui.

Fiz uma comparação de velocidade com o uso do find 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, encontrar é mais rápido. Eu vou estar usando essa abordagem.

Editar: mais testes indicam que a localização foi mais rápida em uma máquina diferente. Acho que meus resultados iniciais de teste de velocidade foram ruins devido ao cache.

Fontes:

man find

man grep

/programming/7190565/unix-find-multiple-file-types

Elder Geek
fonte
touch hello.mp4não cria um arquivo de vídeo>: - D e você pode alterá-lo locatepara acelerar.
Rinzwind
@Rinzwind Ponto válido em relação touchNo entanto, como isso não foi feito neste sistema, não é realmente relevante neste caso. No que diz respeito à localização, eu teria que executar updatedbantes para ter dados atuais, não?
Elder Geek
Sim, updatedb é feito todos os dias por isso, se você pode supor que você não precisa últimas horas (a velocidade ele retorna os resultados é uma magnitude maior do que com find: D)
Rinzwind
@Rinzwind Eu adoraria ver um exemplo disso usando o localizador.
Elder Geek
adicionou uma localização.
Rinzwind