Поиск путей файлов по их содержимому bash
find . \
-type f \
-size -2M \
\( -name "*.php" -o -name "*.js" -o -name "*.html" \) \
-exec grep -l "1 2" \
{} +
С исключениями
find . \
-path "./exception7" -prune -o \
-type f \
-size -2M \
\( -name "*.php" -o -name "*.js" -o -name "*.html" \) \
-exec grep -l "1 2" \
{} +
### Пояснение к команде:
1. **`find .`**: Команда `find` начинает поиск с текущей директории (`.`).
2. **`-path "./exception7" -prune -o`**: Эта часть команды исключает из поиска директорию `./exception7` и все её поддиректории.
- `-path "./exception7"`: Условие, которое проверяет соответствие текущего пути заданному (`./exception7`).
- `-prune`: Признак того, что найденная директория должна быть исключена из дальнейшего поиска.
- `-o`: Оператор "или" (OR), который позволяет добавлять дополнительные условия для поиска.
3. **`-type f`**: Указывает, что мы ищем только файлы (`f` для files).
4. **`-size -2M`**: Фильтрует файлы по размеру. Значение `-2M` означает, что размер файла должен быть меньше 2 мегабайтов (не включая 2МБ).
5. **`\( -name "*.php" -o -name "*.js" -o -name "*.html" \)`**: Это группировка условий для поиска файлов с определенными расширениями: `.php`, `.js` и `.html`.
- `-name "*.php"`: Ищет файлы, имена которых заканчиваются на `.php`.
- `-o`: Оператор "или" (OR).
- `-name "*.js"`: Ищет файлы, имена которых заканчиваются на `.js`.
- `-o`: Оператор "или" (OR).
- `-name "*.html"`: Ищет файлы, имена которых заканчиваются на `.html`.
6. **`-exec grep -l "1 2" {} +`**: Команда выполняется для каждого найденного файла.
- `grep`: Поиск строки "1 2" в тексте файлов.
- `-l`: Выводит только имена файлов, где была найдена указанная строка.
- `{}`: Заменяется на имя текущего файла, переданного команде `find`.
- `+`: Выполняет команду для всех найденных файлов одновременно.
Эта команда полезна для поиска строки "1 2" в файлах с определенными расширениями, исключая указанную директорию и файлы большего размера, чем заданный предел.