Linux или Unix найти: ярлык для соответствия частичного имени
Что я обычно печатаю:
find . -name "*pattern*"
что я хочу напечатать (например. mnemonic = "all"):
afind . -name "pattern"
или же
find . -aname "pattern"
Я просто думал, что может быть ярлык, как в стилеfind . -iname "blah"
или жеrgrep instead of grep -r
Несмотря на то, что, как и в примере с grep, он сохраняет только пару символов, это сдвинутые символы, которые набрать не так просто, и, вероятно, это часто используемый поиск.
3 ответа
Вы должны были бы катиться самостоятельно. например:
$ afind () { find "$1" -name "*$2*"; }
$ afind . partial
./dir/apartialmatch
Вы можете добавить определение в свой.profile или любой другой файл, чтобы он всегда был доступен.
То, что вы ищете, это своего рода функция-обертка для поиска.
Этот скрипт должен делать то, что вы ищете, и поддерживать все остальные функции поиска.
declare -A params
wild_next=false
for i in $(seq 1 $#); do
if [[ ${!i} == "-aname" ]]; then
params[$i]='-name'
wild_next=true
else
if $wild_next; then
params[$i]="'*${!i}*'"
else
params[$i]=${!i}
fi
wild_next=false
fi
done
eval "find ${params[@]}"
Он просто заменяет любой экземпляр -aname
вариант с -name
и ставит звездочки вокруг своего аргумента.
Если это то, что вы делаете много, locate
будет быстрее. Он основан на быстром поиске в Беркли и входит в пакет GNU "findutils". Обратите внимание, что он получает свои данные из базы данных, поэтому он является таким же текущим, как и последний запуск updatedb
, который также находится в пакете "findutils".