Я искал репозиторий Git и хотел бы включить папку .git
.
grep
не включает эту папку, если я запускаю
grep -r search *
Что было бы командой grep для включения этой папки?
Я искал репозиторий Git и хотел бы включить папку .git
.
grep
не включает эту папку, если я запускаю
grep -r search *
Что было бы командой grep для включения этой папки?
Пожалуйста, обратитесь к решению в конце этого сообщения в качестве лучшей альтернативы тому, что вы делаете.
Вы можете явно включать скрытые файлы (каталог также является файлом).
grep -r search * .*
*
будет соответствовать всем файлам, кроме скрытых, а .*
будет соответствовать только скрытым файлам. Однако это не удастся, если в заданном каталоге нет либо не скрытых файлов, либо нет скрытых файлов. Конечно, вы можете явно добавить .git
вместо .*
.
Однако, если вы просто хотите выполнить поиск в заданной директории, выполните следующие действия:
grep -r search .
.
будет соответствовать текущему пути, который будет содержать как не скрытые, так и скрытые файлы.
Я просто столкнулся с этой проблемой и на основе ответа @bitmask, вот моя простая модификация, чтобы избежать проблемы, отмеченной @sehe:
grep -r search_string * .[^.]*
Возможно, вы предпочтете объединить "grep" с командой "find" для полного решения, такого как:
find . -exec grep -Hn search {} \;
Эта команда будет искать в скрытых файлах или каталогах строку "поиск" и перечислять любые файлы с совпадением с этим форматом вывода:
Путь к файлу: Номер строки: строка с совпадением
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
Возможно, вы захотите использовать этот подход, предполагая, что вы ищете текущий каталог (в противном случае замените его на нужный каталог):
find . -type f | xargs grep search
или если вы просто хотите выполнить поиск на верхнем уровне (который быстрее проверить, если вы попробуете это):
find . -type f -maxdepth 1 | xargs grep search
ОБНОВЛЕНИЕ: я изменил примеры в ответ на комментарии Скотта. Я также добавил "-type f".
Все остальные ответы лучше. Это может быть легко запомнить:
find . -type f | xargs grep search
Он находит только файлы (в том числе скрытые) и greps каждый файл.
Искать ТОЛЬКО все скрытые файлы и каталоги из вашего текущего местоположения:
find . -name ".*" -exec grep -rs search {} \;
ТОЛЬКО все скрытые файлы:
find . -name ".*" -type f -exec grep -s search {} \;
ТОЛЬКО все скрытые каталоги:
find . -name ".*" -type d -exec grep -rs search {} \;
Чтобы найти только в определенной папке, вы можете использовать:
ls -al | grep " \."
Это очень простая команда для вывода и передачи в grep.
Чтобы предотвратить сопоставление .
и ..
, которые не являются скрытыми файлами, вы можете использовать grep
с ls -A
, как в этом примере:
ls -A | grep "^\."
^\.
утверждает, что первый символ должен быть .
Опция -A
или --almost-all
исключает результаты .
и ..
, так что сопоставляются только скрытые файлы и каталоги.
В дополнение к предложению Тайлера, вот команда для рекурсивного grep всех файлов и папок, включая скрытые файлы
find . -name "*.*" -exec grep -li 'search' {} \;