Если я правильно понимаю вопрос, вы можете сделать это с помощью одной команды grep.
Для Q1a вывод grep
может подавлять имя файла с помощью -h
, например:
grep -hnr "the_string" /media/slowly/DATA/lots_of_files > output.txt
Для Q1b вывод grep
может включать строки, предшествующие и следующие совпадающие строки с использованием -A
и -B
, например:
grep -hnr -A2 -B2 "the_string" /media/slowly/DATA/lots_of_files > output.txt
Вывод будет содержать разделитель между совпадениями, который вы можете подавить с помощью - no-group -separator
, например:
grep -hnr -A2 -B2 --no-group-separator "the_string" /media/slowly/DATA/lots_of_files > output.txt
Обратите внимание, что в выходных данных используется другой разделитель для совпадающих строк (:
) и контекстных строк ( -
).
Согласно странице руководства zfs
(FreeBSD 11-STABLE от 09 марта 2017 г.),
Enforcement of user quotas may be delayed by several seconds. This
delay means that a user might exceed their quota before the system
notices that they are over quota and begins to refuse additional
writes with the EDQUOT error message.
возможно, что ваши тесты выявляют это поведение. Что произойдет, если вы попытаетесь превысить значение userquota
в нескольких транзакциях, дав системе время на уведомление?