我有使用基于 Mac 的 bash 脚本分布式文件系统命令在 shell 脚本中生成媒体文件的元数据报告。脚本运行时,输出如下所示:
1) [./test1.mov]
- Duration: 22.03
- Dimensions: 480 X 640 pixels
- Codec: ( "H.264" )
有时报告中的所有文件的结果都为空:
1) [./test1.mov]
- Duration: (null)
- Dimensions: (null) X (null) pixels
- Codec: ( null )
以下是生成报告的脚本:
cd "path_to_folder"
while IFS= read -r -d $'\0' file; do
duration=`mdls -name kMDItemDurationSeconds "$file" | cut -d "=" -f 2 `
duration=`printf "%.2f" $duration;`
pixel_height=`mdls -name kMDItemPixelHeight "$file" | cut -d "=" -f 2`
pixel_width=`mdls -name kMDItemPixelWidth "$file" | cut -d "=" -f 2`
codec=`mdls -name kMDItemCodecs "$file" | cut -d "=" -f 2`
temp="$i) [$file]\n- Duration: $duration\n- Dimensions: $pixel_width X $pixel_height pixels\n- Codec: $codec\n"
metaDataOutput=$metaDataOutput"\n"$temp
i=$((i + 1))
done < <(find . \( -iname \*.m4v -o -iname \*.mov -o -iname \*.m4r -o -iname \*.m4a \) -print0 )
echo -e "\n[Report]\n"$metaDataOutput
知道我可能做错了什么吗?为什么是空值?
答案1
也许该文件被排除在 Spotlight 索引之外?或者它可能位于不支持 Spotlight 索引的硬盘或网络共享上?
如果以上情况都不是,听起来您的 Spotlight 数据库有问题。Spotlight 中有一些极其复杂的优化,以将其对性能的影响降至最低,但有时它会出现问题。
您可以使用它mdutil
来查找驱动器聚光灯数据库的状态(/Volumes/other_disk
如果您不想将它们应用到启动盘,请使用):
sudo mdutil -s /
您可以通过运行以下命令删除/刷新特定磁盘上的数据库:
sudo mdutil -E /
Spotlight 会在需要时重建索引(可能是在您的系统空闲时)。您可以使用以下命令立即重新索引:
sudo mdutil -i on /
根据您系统上的文件数量,重建索引可能需要几个小时。您可以在 GUI 的聚光灯搜索图标中跟踪进度。
请参阅man mdutil
以了解更多信息。