Поскольку я использую MacOS Catalina, я хотел бы воспользоваться полезной mdfind
для поиска любых файлов или каталогов, соответствующих имени.
Я хотел бы переопределить функцию поиска (классическая функция, которая будет все еще доступно, набрав \locate
.
Здесь небольшой двоичный файл, расположенный в ~/bin/locate
:
#!/bin/bash
if [ "$2" != "" ]; then
mdfind "kMDItemDisplayName == '*$(echo $1)*'c" -onlyin "$2"
else
mdfind "kMDItemDisplayName == '*$(echo $1)*'c"
fi
Если нет второго аргумента, я хотел бы найти все файлы, соответствующие $ 1 (первый аргумент) и без учета регистра.
Если есть второй аргумент, он соответствует пути, по которому мы хотим провести исследование.
Но эта новая функция locate плохо работает Иногда файлы находят, а иногда нет, и я не понимаю, почему?
Кто-нибудь может помочь мне изменить этот сценарий, чтобы он соответствовал подстроке с аргументом $ 1, особенно, я не знаю, есть ли у меня $(echo $1)
, $(echo "$1")
, echo "$1"
, "$1"
или другие вещи с опцией kMDItemDisplayName
?
Я просто хочу, чтобы была найдена вся подстрока для файлов (и, возможно, если возможный каталоги) . Я не хочу использовать Linux "locate
", так как я обязан обновляться каждый раз, в отличие от mdfind
, который всегда обновляется.