Найти все файлы, содержащие ключевые слова [дубликаты]

Мне не удалось заставить его работать в fstab. Единственное, что сработало, - это rc.local (который находится в странном месте в centos 7):

#Edit the startup script
vi /etc/rc.d/rc.local

#Add the line (at the end):
sharedfoldername /webapps/apps/destfolder    vboxsf  rw,uid=48,gid=48    0   0

#Make it executable: (This is required in CentOS 7)
chmod +x /etc/rc.d/rc.local

Затем перезагрузитесь.

Благодаря этому: http://www.joe0.com/2016/01/03/how-to-automatically-run-script-at-boot-time-in-centos-7/

1
23.04.2018, 21:32
4 ответа

Моей первой мыслью было сначала найти файлы, содержащие word1, а затем искать среди них файлы, содержащие word2. Было бы:

grep -l word1 -r. | xargs grep -l word2

Пример:

$ cat FILE
word1
$ cat FILE1
word2
$ cat FILE2
word1
word2
$ grep -l word1 -r. | xargs grep -l word2
FILE2

Протестировано с пользовательским пространством GNUи FreeBSD.

-1
27.01.2020, 23:43

Я бы использовал функцию find, когда каждый тест должен пройти, чтобы файл считался совпадающим. Соедините две команды grepвместе, чтобы они соответствовали критериям :

.
find. -type f -exec grep -q word_one {} \; -exec grep -l word_two {} \;

Вы можете настроить флаги для grep по мере необходимости, в том числе заключать слова в кавычки, если они содержат какие-либо оболочки -специальные или регулярные выражения -специальные символы (или использоватьgrep -F).

1
27.01.2020, 23:43

Вам бы не помешалоgrep:

grep -Elrz "word2(.|\n)*word1|word1(.|\n)*word2".

Если вам нужно, чтобы на выходе отображался совпадающий контент, удалите параметр lвыше.

0
27.01.2020, 23:43

Как искать файлы, в которых есть два разных слова? имеет много хороших решений вашей основной проблемы. Чтобы выполнить дополнительное требование для отображения контекста, нам нужно взять только один из этих ответов (, например, ответ Стефана)и добавить к нему немного:

find. -type f -exec grep -q word1 {} ';' -exec grep -q word2 {} ';'  \
                                            -exec grep -A3 -B3 -E -H 'word1|word2' {} +

Часть find. -type f -exec grep -q word1 {} ';' -exec grep -q word2 {} ';'это просто второй ответ Стефана (портативный, но простой )с опцией -lна второйgrep(для списка имен файлов )заменено на-q(для поиска и тихого выхода со статусом ). Затем мы добавляем последний grepдля отображения результатов. -A3и -B3показывают три строки после и три строки перед каждым совпадением; отрегулируйте их на свой вкус. -Eнеобходим для получения расширенного регулярного выражения word1|word2работать без \; -Hзаставляет grepпечатать имя файла, даже если имеется только один файл.

1
27.01.2020, 23:43

Теги

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