下面的脚本接受一个用户输入(到一个挂载的macOS卷的路径,例如/macOS/Macintosh\ HD/)
#!/bin/bash
# Author: Swasti Bhushan Deb
# macOS 10.13.3
# kMDItemWhereFroms.sh
read -e -p "Enter the full path to the Mounted Volume (e.g /Volume /Macintosh HD): " path
var=$(mdfind -name 'kMDItemWhereFroms="*"' -onlyin "$path")
echo "$var" 输出:
/Users/swastibhushandeb/Documents/encase_examiner_v710_release_notes.pdf
/Users/swastibhushandeb/Desktop/AirPrint Forensics.pdf作为下一步,我希望脚本在kMDItemWhereFroms.sh的每个输出上执行mdls (打印与文件关联的所有元数据属性的值),这些输出也可以通过以下方式手动遍历:
mdls /Users/swastibhushandeb/Documents/encase_examiner_v710_release_notes.pdf但是,如果这种处理是自动化的,那么可用的bash编码策略/选项是什么?如何将输出定向到csv文件,以便每个列包含来自mdls命令输出的字段?
发布于 2019-04-16 16:05:59
您可以使用mdfind的S -0选项和xargs一起使用以NUL字符结尾的名称(因此不必担心空格/制表符/换行符等)。
read -e -p 'Path? ' path
mdfind -0 -name 'kMDItemWhereFroms="*"' -onlyin "$path" | xargs -0 mdls如果您也希望看到路径/文件名(不仅是mdls的输出),它就变得更加详细了:
mdfind -0 -name 'kMDItemWhereFroms="*"' -onlyin "$path" | \
xargs -0 -n 1 sh -c 'echo "$1" && mdls "$1"' _(结尾的_只是sh的语法糖,它将第一个参数(通常是命令的名称)分配给$0)
https://unix.stackexchange.com/questions/512811
复制相似问题