Есть ли какая-то альтернатива, find
похожая на ag
и ack
?
Мне очень надоело печатать:
find some/app -iname "some_file*"
Я бы лучше просто набрал:
find "some_file*"
И пусть он выполнит поиск в текущей папке и рекурсивно во всех подпапках.
решение1
Вот для чего нужны функции или скрипты. Например:
myfind() {
search="$1"
shift
find . -iname "$search" "$@"
}
В "$@"
конце вы все еще можете указать другие параметры поиска, если хотите. Обратите внимание, однако, что find
порядок некоторых параметров довольно щепетилен, некоторые параметры работают только если они идут перед путем ( .
в данном случае).
У некоторых есть основания find
жаловаться на то, что им не нужен аргумент, исключающий возможность выбора.
например, find . -iname "*.txt" -maxdepth 1
вызывает следующее нытье:
find: предупреждение: вы указали опцию -maxdepth после не являющегося опцией аргумента -iname, но опции не являются позиционными (-maxdepth влияет на тесты, указанные до него, а также на те, которые указаны после него). Пожалуйста, укажите опции перед другими аргументами.
Насколько мне известно, отключить эти предупреждения невозможно... или, если и есть, то она не называется --quiet
или --silent
.
В любом случае, сохраните функцию выше в текстовом файле, например myfind.txt
. Затем используйте ее в качестве источника:
. myfind.txt
.
Если вы хотите, чтобы она определялась при каждом входе в систему, добавьте определение функции в свой ~/.profile
или ~/.bash_profile
, или исходный файл myfind.txt
из них.
Это предполагает, что вы используете оболочку Bourne, например sh
или bash
. Обратите внимание, что некоторые версии sh
могут потребовать ключевое слово function
перед myfind
- например function myfind() { ... }
. Если вы используете csh
или tcsh
, то... ну... не надо, переключитесь на оболочку Bourne.