The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как запретить grep'у искать в /proc и /sys?, !*! inFlowiaLab, 14-Май-20, 00:42  [смотреть все]
Есть желание сделать поиск по домашней директории например при помощи команды:
grep 'что то что надо найти' "$HOME" -r -R

так чтобы по всем каталогам и симлинкам походил, только вот знаю что на каталоги proc и sys лучше grep не натравливать, иначе либо всё закончится потенциально бесконечно долгим поиском с перспективой самых непредсказуемых последствий (некоторые из интернета систему ложили так).
Я уверен, что в эти каталоги ведут ссылки из домашней директории (как минимум через .wine в которм есть ссылка на корень).
Можно ли как-то запретить grep'у заходить в proc и sys но при этом сохранить ключ -R (который разрешает ходить grep'у по ссылкам).?
  • Как запретить grep'у искать в /proc и /sys?, !*! Licha Morada, 03:28 , 14-Май-20 (1) +1
    > Есть желание сделать поиск по домашней директории ...

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

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

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


      • Как запретить grep'у искать в /proc и /sys?, !*! inFlowiaLab, 18:17 , 14-Май-20 (3)
        > 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.
        • Как запретить grep'у искать в /proc и /sys?, !*! Vlad, 18:24 , 15-Май-20 (4)
          Тогда лучше find

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

          • Как запретить grep'у искать в /proc и /sys?, !*! inFlowiaLab, 20:44 , 15-Май-20 (5)
            > Тогда лучше 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’?

            Хотя должен был по идее все файлы из моего каталога показать.
            • Как запретить grep'у искать в /proc и /sys?, !*! ACCA, 22:08 , 15-Май-20 (6)
              find / -mount -type f | xargs grep "searching phrase"

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

              • Как запретить grep'у искать в /proc и /sys?, !*! inFlowiaLab, 17:26 , 16-Май-20 (7)
                Попробовал:

                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 - считаются смонтированными?

                • Как запретить grep'у искать в /proc и /sys?, !*! Licha Morada, 22:53 , 16-Май-20 (8)

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

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

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

                  Ключ -xdev.

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

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


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

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

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

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

            • Как запретить grep'у искать в /proc и /sys?, !*! Vlad, 15:14 , 18-Май-20 (13)
      • Как запретить grep'у искать в /proc и /sys?, !*! inFlowiaLab, 11:33 , 18-Май-20 (12)
        > 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.

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



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

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