Максимальный размер списка аргументов варьируется, но обычно это что-то вроде 128 КиБ или 256 КиБ. Это означает, что у вас очень много файлов, если часть *20200119*
переполняет список максимального аргумента. Но вы говорите «около 3 файлов lakhs», что составляет около 300 000 - каждый файл содержит по крайней мере 8-символьную строку даты, плюс достаточно других символов, чтобы сделать имя уникальным, поэтому список имен файлов будет слишком длинным даже для самого большого вероятного «максимального размера списка аргументов».
Обратите внимание, что часть вашей команды nohup cat
не имеет смысла (см. UUo C: Бесполезное использование Cat ); Вы должны использовать grep '{' *20200119*
, чтобы сохранить ненужную передачу всех этих данных по каналу. Однако это также может привести к проблемам с слишком длинным списком аргументов.
Возможно, вам придется использовать вариант следующей команды, чтобы получить желаемый результат без переполнения командной строки:
find . -depth 1 -name '*20200119*' -exec grep '{' {} + | wc -l
При этом используется функция POSIX find
, которая группирует столько аргументов, сколько уместится в командной строке, без переполнения для запуска grep
на большом (но не слишком большом) количестве файлов, а затем передает выходные данные grep
дает команду wc
. Если вас беспокоят имена файлов, появляющиеся в выходных данных, подавьте их с помощью grep -h
.
. Или вы можете использовать:
find . -depth 1 -name '*20200119*' -exec grep -c -h '{' {} + |
awk '{sum += $1} END {print sum}'
grep -c -h
в macOS производит простое число (количество строк, содержащих не менее одного {
) в его стандартном выводе для каждого файла, указанного в его списке аргументов; то же самое делает GNU grep
. Сценарий awk
суммирует эти числа и печатает результат.
Использование -depth 1
поддерживается find
в macOS; также -maxdepth 1
- они эквивалентны. GNU find
не поддерживает -depth 1
. Было бы лучше использовать -maxdepth 1
. POSIX find
поддерживает только -depth
без номера. Вероятно, вы получите лучшее сообщение об ошибке при использовании -maxdepth 1
с find
, который поддерживает только минимальный набор параметров POSIX, чем при использовании -depth 1
.