Как я могу скрыть скрытые файлы?

Я искал репозиторий Git и хотел бы включить папку .git.

grep не включает эту папку, если я запускаю

grep -r search *

Что было бы командой grep для включения этой папки?

Ответ 1

Пожалуйста, обратитесь к решению в конце этого сообщения в качестве лучшей альтернативы тому, что вы делаете.

Вы можете явно включать скрытые файлы (каталог также является файлом).

grep -r search * .*

* будет соответствовать всем файлам, кроме скрытых, а .* будет соответствовать только скрытым файлам. Однако это не удастся, если в заданном каталоге нет либо не скрытых файлов, либо нет скрытых файлов. Конечно, вы можете явно добавить .git вместо .*.

Однако, если вы просто хотите выполнить поиск в заданной директории, выполните следующие действия:

grep -r search .

. будет соответствовать текущему пути, который будет содержать как не скрытые, так и скрытые файлы.

Ответ 2

Я просто столкнулся с этой проблемой и на основе ответа @bitmask, вот моя простая модификация, чтобы избежать проблемы, отмеченной @sehe:

grep -r search_string * .[^.]*

Ответ 3

Возможно, вы предпочтете объединить "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

Ответ 4

Возможно, вы захотите использовать этот подход, предполагая, что вы ищете текущий каталог (в противном случае замените его на нужный каталог):

find . -type f | xargs grep search

или если вы просто хотите выполнить поиск на верхнем уровне (который быстрее проверить, если вы попробуете это):

find . -type f -maxdepth 1 | xargs grep search

ОБНОВЛЕНИЕ: я изменил примеры в ответ на комментарии Скотта. Я также добавил "-type f".

Ответ 5

Все остальные ответы лучше. Это может быть легко запомнить:

find . -type f | xargs grep search

Он находит только файлы (в том числе скрытые) и greps каждый файл.

Ответ 6

Искать ТОЛЬКО все скрытые файлы и каталоги из вашего текущего местоположения:

find . -name ".*" -exec grep -rs search {} \;

ТОЛЬКО все скрытые файлы:

find . -name ".*" -type f -exec grep -s search {} \;

ТОЛЬКО все скрытые каталоги:

find . -name ".*" -type d -exec grep -rs search {} \;

Ответ 7

Чтобы найти только в определенной папке, вы можете использовать:

ls -al | grep " \."

Это очень простая команда для вывода и передачи в grep.

Ответ 8

Чтобы предотвратить сопоставление . и .., которые не являются скрытыми файлами, вы можете использовать grep с ls -A, как в этом примере:

ls -A | grep "^\."

^\. утверждает, что первый символ должен быть .

Опция -A или --almost-all исключает результаты . и .., так что сопоставляются только скрытые файлы и каталоги.

Ответ 9

В дополнение к предложению Тайлера, вот команда для рекурсивного grep всех файлов и папок, включая скрытые файлы

find . -name "*.*" -exec grep -li 'search' {} \;