Как написать команду bash, которая находит все файлы в текущем каталоге, содержащие слово «foo», независимо от регистра?
Если вы хотите, чтобы "foo" проверялось на наличие конкурсов файлов в ., сделайте это:
.
grep . -rsni -e "foo"
, чтобы узнать больше параметров (-I, -T, ...), см. man grep.
man grep
Предполагая, что вы хотите искать внутри файлов (не имена файлов)
Если вы хотите, чтобы поиск выполнялся только в текущем каталоге (не в дереве)
grep * -nsie "foo"
, если вы хотите сканировать все дерево (из текущего каталога)
grep . -nsrie "foo"
Я всегда использовал эту маленькую команду оболочки:
gfind () { if [ $# -lt 2 ]; then files="*"; search="${1}"; else files="${1}"; search="${2}"; fi; find . -name "$files" -a ! -wholename '*/.*' -exec grep -Hin ${3} "$search" {} \; ; }
вы звоните по номеру gfind '*php' 'search string' или если хотите найти все файлы gfind 'search string'
gfind '*php' 'search string'
gfind 'search string'
Попробуйте:
echo *foo*
напечатает имена файлов / каталогов, совпадающие с *foo* в текущем каталоге, что соответствует любому имени, содержащему 'foo'.
*foo*
shopt -s nullglob shopt -s nocaseglob for file in *foo* ... ... ..
найти.тип F |grep -i "foo"