Я хочу шукати рядок тексту у всіх файлах у каталозі (а не в його підкаталогах; я знаю, що -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