好的,所以我有一个运行命令的脚本来获取文件名列表,但是其中一些可能实际上并不存在。我想要做的是通过管道过滤此列表并删除任何实际不存在的文件名。
如果它帮助我正在使用的任何命令是OS X的mdfind(Spotlight搜索),根据一些搜索条件,它将快速返回匹配文件名列表(实际上是绝对路径);问题是Spotlight可能会返回一些垃圾结果,通常是“坏道”,所以我需要过滤掉这些,这样我就可以将列表传递给另一个程序了。
答案 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