В Bash глобус не будет расширяться в скрытые файлы, поэтому, если вы хотите выполнить поиск все файлы в каталоге, вам нужно указать скрытые файлы .*
и не скрытый *
.
Чтобы избежать ошибок "Это каталог", вы могли бы использовать -d skip
, но в моей системе я также получаю сообщение об ошибке grep: .gvfs: Permission denied
†, поэтому я предлагаю использовать -s
, который скрывает все сообщения об ошибках.
Итак, команда, которую вы ищете, - это:
grep -s "string" * .*
Если вы ищете файлы в другом каталоге:
grep -s "string" /path/to/dir/{*,.*}
Другим вариантом является использование dotglob
опция оболочки, которая заставит глобус включать скрытые файлы.
shopt -s dotglobgrep -s "string" *
Для файлов в другом каталоге:
grep -s "string" /path/to/dir/*
† Кто-то упомянул, что я не должен получать эту ошибку. Возможно, они правы - я кое-что прочитал, но сам ничего не понял.