Como classificar / pesquisar arquivos de vídeo com base nas propriedades?

1

Esta é uma situação única

Eu tenho mais de 500 filmes em uma partição. O que eu queria fazer é pesquisar arquivos de filmes com base em Propriedade Dimensão de Vídeo , para que eu pudesse excluir qualquer coisa abaixo de 720p HD, para abrir espaço para outras coisas.

A opção de pesquisa no nautilus pode pesquisar por datas ou tipos de arquivo, mas não por propriedades. existe outro aplicativo que eu possa usar? ou comando? ou Nautilus-Script ?

UPDATE

find . -name '*.mkv' -exec exiftool -fileName -imageSize {} \; 

Este comando funciona como esperado, mas eu quero que este comando faça um pouco mais. Eu não sei como ExifTool funciona, então eu não posso modificá-lo

posso adicionar várias extensões de arquivo em um único comando? a maioria dos arquivos é mkv , mas inclui mp4 flv . um único comando varrendo todas essas extensões de vídeo poderia economizar muito trabalho

(veja quantas subpastas existem)

    
por Sumeet Deshmukh 03.04.2017 / 10:58

1 resposta

2

Ativar globbing estendido e recursivo:

shopt -s extglob globstar

Então:

exiftool -q -p '$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv)

** será usado em subdiretórios. O glob +(*.mp4|...) estendido corresponderá a pelo menos um dos padrões dentro do () .

Você pode usar o grep para processar a saída e gerar uma lista de arquivos que não são 1920x1080 :

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv) |
  grep -v ' 1920x1080$'

Observe a alteração aqui: estou usando $Directory/$FileName $Imagesize . Precisamos do caminho para o arquivo, não apenas do nome do arquivo, então $Directory/$Filename . E Aqui verificamos se cada linha não termina com 1920x1080 ( $ é o fim da linha, -v no grep inverte a correspondência). Verifique a saída .

Agora podemos excluir esses arquivos:

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv) |
  grep -v ' 1920x1080$' | sed 's: [^ ]*$::' |
  xargs -d '\n' rm

sed 's: [^ ]*$::' remove tudo do último até o final da linha, portanto, a resolução AxB da saída de exiftool é removida, mantendo apenas o nome do arquivo. Então xargs rm toma cada linha como um nome de arquivo e executa rm com eles como argumento.

Desative as opções de globbing quando terminar:

shopt -u globstar globstar

Para excluir várias resoluções, use um OR em grep :

grep -Ev ' (1920x1080|1920x820|1280x544)$'

Aqui está um comando com todos os formatos de vídeo amplamente usados

exiftool -q -p '$Directory/$FileName $ImageSize' **/+(*.mp4|*.mkv|*.flv|*.avi|*.webm|*.vob|*.mov|*.wmv|*.amv|*.m4p|*.m4v|*.mpeg|*.mpv|*.m4v|*.3gp)

Aqui está um comando excluindo (quase) todos os formatos de Vídeo HD

grep -Ev ' (1920x1080|1920x1040|1920x1068|1906x952|1916x808|1920x808|1920x804|1916x812|1600x864|1436x1080|1920x820|1280x544|1920x800|1920x802|1920x816|1856x1080|1920x1072|1920x1056|1280x720|1280x536|1280x560|1280x538|1280x528|1216x544|1280x534|1280x532|1281x534|1278x714|1280x718|1280x688|1278x682|1280x690|1280x694|1280x660|1282x692|1280x692|1285x696|1278x544|1280x696|1279x718|1280x546|1281x546|960x720|1324x552|1305x552|1308x552|1536x640)$'
    
por muru 03.04.2017 / 13:38