2013-04-18 65 views
1

好吧,所以我有一個腳本運行命令來獲取文件名列表,但其中一些可能實際上不存在。我想要做的是通過管道過濾這個列表並刪除任何實際不存在的文件名。過濾器「壞路徑」結果mdfind

如果它幫助我使用的命令是OS X的mdfind(Spotlight搜索),給定一些搜索條件,它將快速返回匹配文件名列表(實際上,絕對路徑);問題在於Spotlight可能會返回一些垃圾結果,通常是「不良路徑」,所以我需要過濾掉這些結果,以便將列表傳遞給另一個程序。

+0

迭代它爲什麼某些文件不存在? –

回答

1

試圖通過grep管道的mdfind命令:

mdfind __your-query-args__ | grep -iv "bad path" 
+0

啊哈!感謝Rodney和@glenn,這兩種方法都可以工作,但這個似乎是兩者的更清潔,因爲mdfind返回的項目實際上應該存在(對不起,如果我混淆了我的問題),我可能會通過gzip管道並進入一個文件這應該是最簡單的工作。 – Haravikk

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