如何根据属性对视频文件进行排序/搜索?

如何根据属性对视频文件进行排序/搜索?

这是一个独特的情况

我的一个分区中有 500 多部电影。我想要做的是根据属性搜索电影文件视频尺寸,这样我就可以删除低于 720p HD 的任何内容,为其他内容腾出空间。

nautilus 中的搜索选项可以按日期或文件类型搜索,但不能按属性搜索。还有其他我可以使用的应用程序吗?或命令?​​或Nautilus 脚本

突出视频维度

更新

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

此命令按预期工作,但我希望此命令能做更多的事情。我不知道该怎么做Exif工具有效,所以我无法修改它

我可以在单个命令中添加多个文件扩展名吗? 大多数文件都是,mkv但它包括mp4 flv。一个命令扫描所有这些视频扩展可以节省很多工作

在此处输入图片描述

(查看有多少个子文件夹)

答案1

启用扩展和递归通配符:

shopt -s extglob globstar

然后:

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

**将递归到子目录中。扩展的 glob+(*.mp4|...)将匹配 中的至少一个模式()

您可以使用 grep 处理输出并生成文件列表1920x1080

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

注意这里的变化:我正在使用$Directory/$FileName $Imagesize。我们需要文件的路径,而不仅仅是文件名,所以$Directory/$Filename。在这里我们检查每一行是否不以1920x1080$是行尾,-v在 grep 中反转匹配)结尾。验证输出

现在我们可以删除这些文件:

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

sed 's: [^ ]*$::'删除从最后一行到行末的所有内容,因此AxB输出的解析exiftool被删除,只保留文件名。然后xargs rm将每行作为文件名并rm以它们作为参数运行。

完成后禁用通配符选项:

shopt -u globstar globstar

要排除多个分辨率,请在中使用 OR grep

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

以下是包含所有广泛使用的视频格式的命令

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

这是一个排除(几乎)所有高清视频格式的命令

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)$'

相关内容