过滤“坏路径”会导致mdfind

时间:2013-04-18 20:16:13

标签: macos shell command-line scripting

好的,所以我有一个运行命令的脚本来获取文件名列表,但是其中一些可能实际上并不存在。我想要做的是通过管道过滤此列表并删除任何实际不存在的文件名。

如果它帮助我正在使用的任何命令是OS X的mdfind(Spotlight搜索),根据一些搜索条件,它将快速返回匹配文件名列表(实际上是绝对路径);问题是Spotlight可能会返回一些垃圾结果,通常是“坏道”,所以我需要过滤掉这些,这样我就可以将列表传递给另一个程序了。

2 个答案:

答案 0 :(得分:2)

尝试通过mdfind

管道grep命令
mdfind __your-query-args__ | grep -iv "bad path"

答案 1 :(得分:1)

假设你的shell是bash:

result=()
mdfind ... | while IFS= read -r filename; do
  [[ -e $filename ]] && result+=("$filename")
done

IFS=-r位用于正确处理带有空格或转义字符的文件。

数组result包含现有文件。将其用作"${result[@]}"(带引号)的列表,或使用

进行迭代
for file in "${result[@]}"; do something "$file"; done