Обновление 2:
Эта строка команд с использованием find и grep устраняет проблему:
$ find path_to_search_in -type f -exec grep -in searchString {} 2> /dev/null +
--color=<always or auto> для цветного вывода:
$ find path_to_search_in -type f \
-exec grep --color=always -in searchString {} 2>/dev/null +
Пример:
$ find /tmp/test/ -type f -exec grep --color=auto -in "Search string" {} 2>/dev/null +
Пример, выполняемый в снимок ниже:
Обновление 2:
Вы можете попробовать следующий код; как функция в ваших .bashrc или .bash_aliases или в скрипте:
wherein ()
{
for i in $(find "$1" -type f 2> /dev/null);
do
if grep --color=auto -i "$2" "$i" 2> /dev/null; then
echo -e "\033[0;32mFound in: $i \033[0m\n";
fi;
done
}
Использование: wherein /path/to/search/in/ searchkeyword
example:
$ wherein ~/Documents/ "hello world"
(Примечание: как было предложено в комментариях ниже @enzotib, это не работает с файлами / каталогами, включая пробелы в их именах.)
[d16 ] Оригинальная записьДля поиска строки и вывода этой строки с помощью строки поиска:
$ for i in $(find /path/of/target/directory -type f); do \
grep -i "the string to look for" "$i"; done
например:
$ for i in $(find /usr/share/applications -type f); \
do grep -i "web browser" "$i"; done
Чтобы отобразить имя файла содержащий строку поиска:
$ for i in $(find /path/of/target/directory -type f); do \
if grep -i "the string to look for" "$i" > /dev/null; then echo "$i"; fi; done;
например:
$ for i in $(find /usr/share/applications -type f); \
do if grep -i "web browser" "$i" > /dev/null; then echo "$i"; \
fi; done;