В клиентской ОС NFS вы можете запустить:
showmount -e your_nfs_server_ip
В то же время открыть другой терминал на той же машине и запустить:
netstat -nputw
После этого вы увидите исходящие порты.
В моем случае помогло добавление порта 55493 к NAT маршрутизатора
Поскольку статус выхода grep
указывает, найдено ли совпадение, вы можете проверить это напрямую как найти предикат
(с необходимым отрицанием, !
или -не
), например
find . -type f -name "*.c" \( -exec grep -q "ABC" {} \; ! -exec grep -q "123" {} \; \) -print
-q
заставляет grep
завершать работу без уведомления при первом совпадении - нам не нужно получать от него известие, потому что мы позволяем find
печатать имя файла.
Поскольку вы уже используете расширения GNU:
find . -type f -size +2c -name "*.c" -exec grep -l --null ABC {} + |
xargs -r0 grep -L 123
Если вы хотите сделать что-то еще с этими файлами:
find . -type f -size +2c -name "*.c" -exec grep -l --null ABC {} + |
xargs -r0 grep -L --null 123 | xargs -r0 sh -c '
for file do
something with "$file"
done' sh {} +
Или с zsh
или bash
:
find . -type f -size +2c -name "*.c" -exec grep -l --null ABC {} + |
xargs -r0 grep -L --null 123 |
while IFS= read -rd '' file; do
something with "$file"
done
Для сложных ограничений я предпочитаю использовать язык программирования :Awk
find -name '*.c' \
-exec awk -v RS="\0" '/ABC/ && !/123/{print FILENAME}' {} \;