grep, кажется, игнорирует - включают

Это, вероятно, произошло после обновления системы, и как временный файл обычно не нужны после перезагрузки, я попытался бы удалить файл.

fuser /tmp/tmpGTbWYh 

С этой командой Вы видите, используется ли файл каким-либо процессом и даст Вам одно или несколько чисел (идентификатор Процесса, PID).

Никакие числа это означает процесс, не используются, и можно удалить безопасно файл

rm /tmp/tmpGTbWYh

Вышеупомянутое с пользователем, которые имеют права сделать это (Ваш пользователь? корень?), можно проверить это с ls

ls -l /tmp/tmpGTbWYh

Если файл используется каким-либо процессом, можно сделать PS и фильтр каждым PID, который Вы нашли с выполнением термофиксатора

ps -ef | grep $PID

Необходимо заменить $PID с числами, найденными выше (с термофиксатором).

В этой точке необходимо решить, можете ли Вы, определить, что приложение использует файл, и закройте его, если Вы можете, или уничтожать процесс (уничтожьте $PID), или удалите файл так или иначе (это, возможно, быть опасными).

Если Вы испытываете затруднения для решения, сообщают нам.

1
22.12.2011, 06:49
4 ответа

--include=PATTERN только работы, когда Вы добавляете -r

$ grep -r --include='*.html' 'li' .

-R, -r, --recursive   Read all files under each directory, recursively; this is equivalent to the -d recurse option.
--include=PATTERN     Recurse in directories only searching file matching PATTERN.
--exclude=PATTERN     Recurse in directories skip file matching PATTERN.
4
27.01.2020, 23:17

Оболочка, которую Вы используете (удар, tsh, zsh, и т.д.) продиктует командную строку globbing, который будет и не работать. Большинство людей использует удар, потому что он установлен по умолчанию на многих дистрибутивах - я использую удар.

Следующий синтаксис всегда работал на меня.

    grep -r --include=*.html li *
  1. Как упомянуто выше, переключатель-r позволяет grep искать подкаталоги, иначе он не будет, который заставляет его быть похожим на отказавший grep.
  2. Для простых включений типа файла (одно расширение) не нужна никакая тонкая настройка.
  3. Не заключайте в кавычки (единственный или двойной) включение, синтаксическому анализатору не нравится оно

Для включений нескольких расширений я использую расширение фигурной скобки удара.

    grep -r --include=*.{html,htm,js} li *

Другие вещи попробовать, если Вы все еще испытываете затруднения

  1. Выйдите * для защиты его, когда это будет проанализировано оболочкой

    grep -r --include=\*.html li *
    
  2. Сделайте путь поиска более явным

    grep -r --include=\*.html li ./*
    
1
27.01.2020, 23:17

find $directoryname -maxdepth 1 -name '*.html' | xargs grep 'li' Здесь -maxdepth 1 для поиска только в каталоге и не его подкаталогах. Если Вы хотите искать даже в подкаталоге, удаляют -maxdepth 1 в команде.

0
27.01.2020, 23:17
  • 1
    та же старая ошибка: Вы не принимаете во внимание имена файлов с пробелами, где Ваша команда перестала работать. –  enzotib 22.12.2011, 08:59

grep -version не работает, но grep --version дает

grep (GNU grep) 2.9

и оператор авторского права.


grep 'li' *.html

заставляет оболочку делать globbing, который не полезен для меня, так как я хочу рекурсивно вызвать.


Я первоначально попробовал команду -R (или -r) но это не работало также. Команда рекурсивно вызывает, но поднимает файлы без html на имя (или где угодно на путь). Таким образом, это не это также.


Я отправил бы их как комментарии или редактирование в оригинал, но по некоторым причинам StackExchange правильно не связывает мою учетную запись. (Модификации: прокомментируйте-ify это!)

0
27.01.2020, 23:17
  • 1
    является находкой, каждый также не работает??? –  harish.venkat 22.12.2011, 08:55
  • 2
    @harish.venkat: Я не могу вполне заставить это работать, но это кажется самым многообещающим в данный момент. Я работал над аналогичным решением, прежде чем я отправил, но не мог добраться нигде; это помещает меня ближе. Но я все еще становлюсь странным "Никакой такой файл или каталог" ошибки даже при том, что вывод оказывается одним, кажется OK. Моя фактическая строка: find . -name '*.html' | xargs grep -l 'li'. –  Charles 22.12.2011, 09:04
  • 3
    OK, добавляя-0 к xargs заботится о файле, не найденном ошибками, теперь мне просто нужен некоторый 2>/dev/null волшебство остановить ошибки в find. –  Charles 22.12.2011, 09:08
  • 4
    Также существует xargs: argument line too long ошибка; я не предполагаю, что существует легкая фиксация к этому? –  Charles 22.12.2011, 09:09
  • 5
    @Charles необходимо создать учетную запись на Unix & Linux с тем же, открыл это, Вы использовали на Переполнении стека, и свяжите свою основанную на cookie учетную запись с ним. –  Gilles 'SO- stop being evil' 22.12.2011, 10:43

Теги

Похожие вопросы