全部,
我有一个shell脚本,它遍历用户提供的文件夹中的所有媒体(音频,视频)文件,并创建一个很好的基于文本的元数据报告。我正在使用 Mac OS X ,我正在使用Spotlight的mdls
命令来获取所有相关的元数据。问题是,有时我在报告中看到所有媒体文件的“空”结果。如果我再次运行脚本,它似乎工作。我很困惑为什么会这样。这是输出元数据报告的脚本的一部分:
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 \*.mp3 -o -iname \*.m4r -o -iname \*.m4a \) -print0 )
echo -e "\n[Report]\n"$metaDataOutput
预期的输出是这样的:
1) [./ test1.mov]
- 时长:22.03
- 尺寸:480 X 640像素
- 编解码器:(“H.264”)
2) [./ test2.mov]
- 时长:25.03
- 尺寸:480 X 640像素
- 编解码器:(“H.264”)
但有时所有媒体文件的输出都为空:
1) [./ test1.mov]
- 持续时间:null
- 尺寸:空X空像素
- 编解码器:( null)
2) [./ test2.mov]
- 持续时间:null
- 尺寸:空X空像素
- 编解码器:( null)
我在这里错过了一招吗?为什么脚本有时会工作,有时会输出null?
答案 0 :(得分:3)
问题是Spotlight没有索引文件。我使用mdimport命令强制Spotlight索引文件夹并解决了问题