grep -vl
сообщит имена файлов, в которых есть хотя бы одна строка, соответствующая шаблону. Здесь вам нужны файлы, в которых ни одна строка не соответствует шаблону. GNU grep
(как обнаружено в Debian) имеет для этого параметр -L
:
grep -rlZ printf . | xargs -r0 grep -FL '#include <stdio.h>'
С любым POSIX grep
вы можете просто отрицать grep -q
:
find . -type f -exec grep -q printf {} \; \
! -exec grep -Fq '#include <stdio.h>' {} \; \
-print
Намного менее эффективно, поскольку это означает запуск двух экземпляров grep
для каждого файла.
В системах, производных от Debian, даже если для PrintMotd
установлено значение no
в sshd_config
], MOTD по-прежнему представлен как часть конфигурации PAM.
Например, в моей системе Ubuntu (и, следовательно, на основе Debian) в моем / etc / pam.d / sshd
, я вижу:
# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
Их комментирование может подавить сообщение, которое вы пытаетесь удалить.
Попробуйте touch ~ / .hush_login
на удаленном хосте, чтобы подавить motd и некоторые другие вещи. Лучше, чем вмешиваться в конфигурацию sshd IMO.