web-dev-qa-db-fra.com

Comment trier / rechercher des fichiers vidéo en fonction des propriétés?

C'est une situation unique

J'ai plus de 500 films dans une partition. ce que je voulais faire était de rechercher des fichiers vidéo sur la base de la propriété Dimension vidéo, afin que je puisse supprimer quoi que ce soit qui est en dessous de 720p HD, pour faire de la place à d'autres trucs.

L'option de recherche dans nautilus peut rechercher par dates ou types de fichiers mais pas par propriétés. existe-t-il une autre application que je peux utiliser? ou commande? ou Nautilus-Script?

Highlighting video dimension

[~ # ~] mise à jour [~ # ~]

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

Cette commande fonctionne comme prévu mais je veux que cette commande fasse un peu plus. je ne sais pas comment ExifTool fonctionne donc je ne peux pas le modifier

puis-je ajouter plusieurs extensions de fichier en une seule commande? la plupart des fichiers sont mkv mais cela inclut mp4flv. une seule commande balayant toutes ces extensions vidéo pourrait économiser beaucoup de travail

enter image description here

(voir combien de sous-dossiers existe-t-il)

1
Sumeet Deshmukh

Activer la globalisation étendue et récursive:

shopt -s extglob globstar

Alors:

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

** Recursera dans les sous-répertoires. La glob étendue +(*.mp4|...) correspondra à au moins un des modèles à l'intérieur du ().

Vous pouvez utiliser grep pour traiter la sortie et générer une liste de fichiers non 1920x1080:

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

Notez le changement ici: j'utilise $Directory/$FileName $Imagesize. Nous avons besoin du chemin d'accès au fichier, pas seulement du nom du fichier, donc $Directory/$Filename. Et ici, nous vérifions si chaque ligne ne se termine pas par 1920x1080 ($ Est la fin de la ligne, -v En grep inverse la correspondance). Vérifiez la sortie.

Maintenant, nous pouvons supprimer ces fichiers:

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

sed 's: [^ ]*$::' Supprime tout du dernier jusqu'à la fin de la ligne, donc la résolution AxB de la sortie de exiftool est supprimée, en ne gardant que le nom du fichier. Ensuite, xargs rm Prend chaque ligne comme nom de fichier et exécute rm avec eux comme argument.

Désactivez les options de globalisation lorsque vous avez terminé:

shopt -u globstar globstar

Pour exclure plusieurs résolutions, utilisez un OR dans grep:

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

Voici une commande avec tous les formats vidéo largement utilisés

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

Voici une commande excluant (presque) tous les formats vidéo 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)$'
2
muru