The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Как запретить grep'у искать в /proc и /sys?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Консоль)
Изначальное сообщение [ Отслеживать ]

"Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 14-Май-20, 00:42 
Есть желание сделать поиск по домашней директории например при помощи команды:
grep 'что то что надо найти' "$HOME" -r -R

так чтобы по всем каталогам и симлинкам походил, только вот знаю что на каталоги proc и sys лучше grep не натравливать, иначе либо всё закончится потенциально бесконечно долгим поиском с перспективой самых непредсказуемых последствий (некоторые из интернета систему ложили так).
Я уверен, что в эти каталоги ведут ссылки из домашней директории (как минимум через .wine в которм есть ссылка на корень).
Можно ли как-то запретить grep'у заходить в proc и sys но при этом сохранить ключ -R (который разрешает ходить grep'у по ссылкам).?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Как запретить grep'у искать в /proc и /sys?"  +1 +/
Сообщение от Licha Morada (ok), 14-Май-20, 03:28 
> Есть желание сделать поиск по домашней директории ...

Можно постараться оставаться в пределах одной и той-же файловой системы.
Люди комбинируют grep с find, т.к. grep сам файловые системы друг от друга не отличает.

https://unix.stackexchange.com/questions/16138/how-to-search...

Ответить | Правка | Наверх | Cообщить модератору

2. "Как запретить grep'у искать в /proc и /sys?"  +1 +/
Сообщение от Vlad (??), 14-Май-20, 14:02 
grep -i -r --exclude-dir="/proc" --exclude-dir="/sys" 'my_search_phrase' .


Ответить | Правка | Наверх | Cообщить модератору

3. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 14-Май-20, 18:17 
> grep -i -r --exclude-dir="/proc" --exclude-dir="/sys" 'my_search_phrase' .

Если не указан ключ -R не будет же ходьбы по симлинкам а она мне нужна и ещё одна проблема - исключение директорий почему-то не срабатывает, пробовал вот этой строчкой:

sudo grep -r -R --exclude-dir="/proc" --exclude-dir="/sys" "$s"  "$path" 2>"$errLogPath"

Всё равно ищет и находит в proc и sys.
Ответить | Правка | Наверх | Cообщить модератору

4. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от Vlad (??), 15-Май-20, 18:24 
Тогда лучше find

find / -name "searching_phrase" \( ! -name /proc \) -o \( ! -name /sys \) -print

Ответить | Правка | Наверх | Cообщить модератору

5. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 15-Май-20, 20:44 
> Тогда лучше find
> find / -name "searching_phrase" \( ! -name /proc \) -o \( !
> -name /sys \) -print

Не то. Я файлы по содержимому ищу а find же только файлы по имени ищет.
Да и чёт не работает впринципе предложенный вариант команды:


find /media/i/Tmp/ScriptTestingPOLYGON -name "*" \( ! -name /proc \) -o \( ! -name /sys \) -print
find: warning: ‘-name’ matches against basenames only, but the given pattern contains a directory separator (‘/’), thus the expression will evaluate to false all the time.  Did you mean ‘-wholename’?
find: warning: ‘-name’ matches against basenames only, but the given pattern contains a directory separator (‘/’), thus the expression will evaluate to false all the time.  Did you mean ‘-wholename’?

Хотя должен был по идее все файлы из моего каталога показать.
Ответить | Правка | Наверх | Cообщить модератору

6. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от ACCA (ok), 15-Май-20, 22:08 
find / -mount -type f | xargs grep "searching phrase"

Он ещё и в tmpfs не полезет.

Ответить | Правка | Наверх | Cообщить модератору

7. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 16-Май-20, 17:26 
Попробовал:

find "/media/i/Tmp/ScriptTestingPOLYGON" -mount -type f | xargs grep "*"

вот что выдало:

grep: /media/i/Tmp/ScriptTestingPOLYGON/новый: Нет такого файла или каталога
grep: файл: Нет такого файла или каталога
grep: /media/i/Tmp/ScriptTestingPOLYGON/новый: Нет такого файла или каталога
grep: файл: Нет такого файла или каталога
grep: (копия): Нет такого файла или каталога

Короче говоря он получил пути файлов в незавёрнутом в кавычки виде из за чего воспринял пробелы в имени файлов "новый файл" как разделитель.

Кстати, а что должно было запретить ему лазить в sys и proc?
Ключ "-type f" - мол "смотреть только обычные файлы? или -mount - "не заходить в смонтированные ФС"?
proc и sys - считаются смонтированными?

Ответить | Правка | Наверх | Cообщить модератору

8. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от Licha Morada (ok), 16-Май-20, 22:53 

> Короче говоря он получил пути файлов в незавёрнутом в кавычки виде из
> за чего воспринял пробелы в имени файлов "новый файл" как разделитель.

Да, с пробелами засада. Если grep не сложносочинённый, то можно его звать прямо из find, ключём -exec.

> Кстати, а что должно было запретить ему лазить в sys и proc?

Ключ -xdev.

Ответить | Правка | Наверх | Cообщить модератору

9. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от 1 (??), 17-Май-20, 03:07 
find "/media/i/Tmp/ScriptTestingPOLYGON" -mount -type f -print0 | xargs -0 grep "*"

Вот так нормально будет искать даже если в именах директорий или файлов есть пробелы.


Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

10. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от ACCA (ok), 17-Май-20, 09:44 
> Вот так нормально будет искать даже если в именах директорий или файлов
> есть пробелы.

Ты огрёб ещё один шаг к силе, о юный падаван!
Ты молодец, продолжай в том же направлении.

Ответить | Правка | Наверх | Cообщить модератору

11. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 17-Май-20, 22:32 
> find "/media/i/Tmp/ScriptTestingPOLYGON" -mount -type f -print0 | xargs -0 grep "*"
> Вот так нормально будет искать даже если в именах директорий или файлов
> есть пробелы.

С передачей результатов от find в grep теперь всё действительно ok, только вот эта строка ничего не находит, но это уже какие-то интересности с восприятием grep'ом шаблона "*" потому что если заменить это на "1" например, то он уже много чего находит.
PS: Думаю ключи -mount (-xdev) -type f - не нужны. Я не хочу запрещать ему ходить по ссылкам и другим файловым системам. Только в proc и sys путь надо закрыть.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

13. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от Vlad (??), 18-Май-20, 15:14 
тогда + xarg
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

12. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 18-Май-20, 11:33 
> grep -i -r --exclude-dir="/proc" --exclude-dir="/sys" 'my_search_phrase' .

Вернулся к этому варианту, он заработал в таком виде:


sudo grep -r -R --exclude-dir="proc" --exclude-dir="sys" "$s"  "$path"

и всё бы хорошо да только вот он отсеивает ВСЕ каталоги по имени proc и sys, а это плохо. Мне то ведь нужно отсеивать только те что лежат в корне. К сожалению вариант предложенный в цитате ("/proc") - не работает, потому что видимо ключ --exclude-dir так не работает. Вот что в мане:
> Skip  any command-line directory with a name suffix that matches the  pattern  GLOB.   When  searching  recursively,   skip   any subdirectory whose base name matches GLOB.  Ignore any redundant trailing slashes in GLOB.

И видимо дело тут конкретно в:
> Ignore any redundant trailing slashes in GLOB.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

14. "Как запретить grep'у искать в /proc и /sys?"  +/
Сообщение от inFlowiaLab (ok), 18-Май-20, 16:56 
А можно как нибудь заставить grep показывать все места, в которых он сейчас ищет?
Впринципе если ему сказать "ищи всё" то он будет показывать всё что видет (кроме пустых каталогов скорее всего)
Но вот что ему в качестве шаблона для поиска передать, чтобы это означало "искать всё" ведь * почему-то не работает.
Попробовал передать *?* - вроде всё подряд показывает - это правильный вариант, чтобы вывести ВСЁ? Хотя по моему так он пустые файлы не покажет, потому что ? - означает, что один символ всё таки должен быть.
Хочу посмотреть на чём он стопорится. Ещё ни разу поиск по корню не завершился нормально, пробовал давать ему целые сутки висеть - всё равно не закончился.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру