Как использовать grep для всех файлов не рекурсивно в каталоге?

Чтобы удалить красную метку в разделе ntfs,

щелкните по опции gparted в строке меню и выберите Refresh Devices. ИЛИ Загрузите в окна и выполните перезапуск (не выключитесь). ИЛИ Проверьте наличие поврежденных блоков в этом разделе с помощью chkdsk в Windows или утилите ntfsfix в Ubuntu.
1
задан 26 May 2016 в 14:45

3 ответа

Вам нужно добавить параметр -d skip.

Grep выполняет поиск внутри файлов. Вы можете искать рекурсивно, как вы сказали, если вы хотите искать файлы внутри каталога. По умолчанию grep будет читать все файлы и обнаруживать каталоги. Поскольку по умолчанию вы не определили, что делать с каталогами с опцией -d, он выдаст ошибку. Поиск только внутри родительского каталога будет «grep -d skip» string »./*
7
ответ дан 23 May 2018 в 10:47
  • 1
    Для получения дополнительной информации о grep см. [F1]. – anonymous2 25 May 2016 в 19:14
  • 2
    (a) См. редактирование. (b) Использование -d skip не работает; это в основном то же самое, что и -s; также, см. редактирование. (c) Нет, grep -d skip "string" ./* тоже не работает. – John Red 25 May 2016 в 19:40

Старые таймеры, вероятно, сделают это:

find . -type f -print0 | xargs -0 grep "string"
6
ответ дан 23 May 2018 в 10:47

Перефразировать - вы хотите, чтобы grep файлы находились на одном уровне подкаталога, но не повторяли все под-подкаталоги?

grep forthis  *  */*

Или, если вы не хотите, чтобы файлы в текущем каталоге

grep forthis  */*

Обратите внимание: это не будет поиск каталогов, начинающихся с точки.

grep forthis  .*/*    */*   

должен выполнить это задание.

Также есть -maxdepth и -mindepth, доступные для команды find.

1
ответ дан 23 May 2018 в 10:47

Другие вопросы по тегам:

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