# Searching Info With Terminal

## Quotes

* **Одинарные кавычки ('')**

    Всё, что находится внутри одинарных кавычек, воспринимается буквально. То есть, никакие переменные или специальные символы не интерпретируются

    ```bash
    -> echo 'Сегодня $USER не будет заменён'
    Сегодня $USER не будет заменён
    ```


* **Двойные кавычки ("") / альтернатива для $(command)"**

    В двойных кавычках оболочка (например, Bash) продолжает интерпретировать некоторые символы. Например, переменные, управляющие последовательности и командную подстановку (если используется синтаксис $() или даже обратные кавычки внутри).

    ```bash
    -> echo "Сегодня $USER будет заменён" или echo "Сегодня: $(date)"
    Сегодня eldarpopov будет заменён
    ```

* **Обратные кавычки (``)**

    Команды, записанные внутри обратных кавычек, выполняются, а их вывод подставляется вместо команды

    ```bash
    -> echo "Сегодня: `date`"
    Сегодня: Tue Mar 18 01:48:12 MSK 2025
    ```





## Команда find

**Основная цель:** Поиск файлов и каталогов в файловой системе на основе различных критериев.

**Общий синтаксис** команды find выглядит так: `find [directory to search] [options] [expression]`

Пример: `find . -type d -name myfile` - поиск папки (`f`, именно папик, не файла) с именем `myfile` в текущей папке и подпапках

### Поиск нескольких файлов с несколькими расширениями (или условием)

`find . -type f -name "*.cpp" -o -name "*.txt"`

### Поиск файлов в нескольких папках

`find ./location1 /second/location -type f -name "pattern"`

### Поиск без учёта регистра

`find . -type f -iname SEARCH_NAME`

### Глубина поиска в 1

`find . -maxdepth 1 -type f -name "*.txt"`




## Команда grep

**Основная цель:** Поиск текста внутри файлов. grep используется для поиска строк, которые соответствуют регулярному выражению.

### Поиск текста в нескольких файлах

`grep "искомый_текст" file-1.txt file-2.txt`

### Рекурсивный поиск в директории

`grep -r "искомый_текст" ./dir/`

### Подсветка совпадений

`grep --color=auto "искомый_текст" file.txt`

### Найти строку подходящую под регэкс

`grep -E -i '^(linux|unix)' file-name.txt` 

Флаг `-E` используем для регэкс, флаг `-i` для игнорирования регистра.

### Пропуск файлов с расширениями .js.map и .cpp

`grep -R -n "searchText" ~/User --exclude="*.js.map" --exclude="*.cpp"`

В большинстве случаев флаги `-R` и `-r` выполняются одинаково, но `-R` учитывает символьные ссылки, а `-r` — нет




## Grep vs Find

`Grep` более универсальна, тк она может искать как в содержимом файлов, так и в их названиях, в то время как команда `find` ограничивается поиском по атрибутам файлов (метаданным) - имя, тип, время модификации

---

[1.3.3.3 Chmod Theme](./1.3.3.3%20Chmod.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) |  [1.3.4 Regex Folder](../1.3.4%20Regex/)