Files
使用 mdfind 查找給定文件名的文件
有沒有辦法要求
mdfind
搜尋具有確切文件名的文件名?在管道中的某個時刻,我有這個:
(filenames are produced here) | while read f; do mdfind -name "$f" | grep -E "/$f";
我有兩個問題:
- 如果文件名包含
+
:
grep: repetition-operator operand invalid
- 如果文件名包含括號,則結果為空。
我怎樣才能解決這個問題 ?
我認為您在這裡不需要任何正則表達式。只需嘗試使用 grep 搜尋固定字元串。
-F
您可以使用開關啟用固定字元串匹配。鑑於您的命令行看起來像
(filenames are produced here) | \ while read f ; \ do mdfind -name "$f" | grep -F "/$f" ; \ done
使用手冊頁的力量。;)
mdfind 的手冊頁說:
-literal Force the provided query string to be taken as a literal query string, without interpretation.
如果沒有該選項,mdfind 會將“*”、“+”和“()”等字元解釋為正則表達式。
文件名的元數據屬性是
kMDItemFSName
. 因此,要查找具有特定名稱的文件:mdfind -literal 'kMDItemFSName = "somefile.txt"'
額外提示:您還可以
mdls /path/to/somefile.txt
用來檢查文件的元數據