Как насчет использования функции? Добавьте это в свой .bashrc:
function searchFiles() {
find . -name \*."$1" -print0 | xargs -0 grep --color -n "$2"
}
, а затем используйте его как:
$ searchFiles c include
Вы можете использовать псевдоним, но использование функции, как показывает Гонсало, - разумный поступок.
alias searchFiles=sh\ -c\ \''find . -name \*."$1" -type f -print0 | xargs -0 grep --color -Hn "$2"'\'\ -
Независимо от того, функция или псевдоним, я рекомендую использовать -print0
с помощью найдите и -0
с xargs . Это обеспечивает более надежную обработку имен файлов (чаще всего, пробелы в именах файлов).
Пока функция работает, ее нельзя вызывать из других программ и скриптов (без особых проблем). (С псевдонимом будет та же проблема.) Я бы выбрал отдельный сценарий, так как похоже, что вы хотите вызвать его напрямую:
#!/bin/bash
# since you're already using bash, depend on it instead of /bin/sh
# and reduce surprises later (you can always come back and look at
# porting this)
INCLUDE="*.$1"
PATTERN="$2"
grep --color -n "$PATTERN" --recursive --include="$INCLUDE" .
(Нет необходимости искать с тем, что у вас есть.)
Если бы это было только было бы проще использовать функцию внутри другого скрипта, а не напрямую.
Функции оболочки хороши, но вы также можете взглянуть на ack . Он обрабатывает поиск по конкретному файлу с цветовым кодированием, так что ваш пример будет просто
ack --php somepattern