Я хочу шукати рядок тексту у всіх файлах у каталозі (а не в його підкаталогах; я знаю, що -rваріант це робить, але це не те, що я хочу).
Біг
grep "string" /path/to/dirповинен був би це зробити, я читав, але це дає мені помилку:
grep: dir: це каталог
Далі я спробував запустити
grepкілька файлів.grep "string" .bashrc .bash_aliasesпрацює чудово.grep "string" .bash*працює також за задумом.grep "string" *дає мені помилки:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Друкуються лише помилки, я не отримую відповідні рядки. Я спробував використати -sваріант, але безрезультатно.
Отже, мої запитання:
Чому я не можу користуватися
grepкаталогом, як у (1), коли мені це потрібно? Я бачив, що робиться в багатьох прикладах в Інтернеті.
Редагувати : Коли я кажу "використовуючи grep для каталогу", я маю на увазі "пошук у всіх файлах у цьому каталозі, виключаючи його підкаталоги". Я вважаю, що саме це робить grep, коли передаєш йому каталог замість файлу. Я невірний?Будь ласка, дайте мені пояснення щодо роботи,
grepяка б пояснила поведінку команд у (2).
Редагувати : Дозвольте бути більш конкретним. Чому за допомогою символів підстановки можна вказати кілька файлів для пошуку роботи,.bash*а не з*або навіть./*?Як я можу шукати всі файли в каталозі (а не його підкаталогах) за допомогою
grep?
grep "string" .bash*.
grep "string" * .* 2>/dev/nullабоgrep -s "string" * .*
*, відомий як глобус. Globbing не включає в себе назви файлів, починаючи з крапки, такої.bashrcяк стандарт. Ви можете встановити параметри оболонки так, щоб вони включали ці файли, але ви можете трохи заблукати, якщо не знаєте, що робите. Хороший посібник із розуміння глобалізації можна знайти тут mywiki.wooledge.org/glob