2

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

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

4

2 回答 2

2

尝试mdfind通过管道传递您的命令grep

mdfind __your-query-args__ | grep -iv "bad path"
于 2013-04-18T20:27:52.493 回答
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
于 2013-04-18T22:41:48.760 回答