Я хочу идентифицировать строку, предоставленную в качестве аргумента в командной строке. Мне нужно искать только в текущем каталоге и архивах. моя команда:
if grep -s "$1" * .*
then echo "found" else echo "not found"
Но для Например, если у меня есть одна папка со словом «отец», а другая - с «отцом», а строковый ввод - «отец», мой код выводит обе папки. Но если мой ввод - «отец» (отец и пространство), вывод должен быть только первая папка, но мой код отображает обе папки. Что мне делать вместо этого? Также достаточно ли этой команды для поиска по всем папкам и архивам из моего текущего каталога? Изменить: я использую Рабочий стол Ubuntu (Ubuntu 12.04.4 LTS)
Я также пробовал grep -w
, но моя строка не совсем фиксированная строка, это на самом деле шаблон, так что это не совсем то, что я хотел. «fa» мой код должен выводить все папки, содержащие структуры «fa», такие как «отец», «жир» и так далее, но если мой ввод будет «fa» с пробелом, моим выводом должны быть только папки с «fa» и только что
использовать grep -w
-w, --word-regexp
Выбирать только те строки, которые содержат совпадения, образующие целое слова.
Также вы можете использовать -q
.
И если у вас есть фиксированная строка, а не шаблон, добавьте -F
, чтобы grep
работал намного быстрее!
Ваша команда не будет искать рекурсивно.