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?
[~ # ~] 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 mp4
flv
. une seule commande balayant toutes ces extensions vidéo pourrait économiser beaucoup de travail
(voir combien de sous-dossiers existe-t-il)
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)$'