Сокращенная альтернатива для find

Сокращенная альтернатива для find

Есть ли какая-то альтернатива, 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.

Связанный контент