-bash: / usr / bin / grep: слишком длинный список аргументов

Если компьютер поддерживает загрузку с USB-накопителя (большинство современных компьютеров), перейдите для установки с USB-накопителем.

Чтобы подготовить загрузочный USB-накопитель Ubuntu, используйте официальный инструмент Ubuntu - Создатель автозагрузки. Помните, что на USB-накопителе должен быть раздел FAT32. В противном случае автозапуск Disk Creator завершится неудачно.

Если вы собираетесь подготовить USB-загрузочную ручку в Windows, сделайте это, как описано в документации Ubuntu: Как создать загрузочный USB-накопитель в Windows.

1
задан 16 January 2018 в 03:08

3 ответа

Когда вы используете звездочки в командной строке, они расширяются вашей оболочкой перед передачей в приложение. Если эта звездочка расширяется до 100+ файлов, вы на самом деле передаете в приложение более 100 аргументов. Не имеет большого значения аргументов, но ваш bash имеет ограничение в 500 000.

Поскольку вы уже используете -r (рекурсивный), можно переписать вызов grep на укажите только каталог, в который хотите выполнить поиск?

# recursive
grep -R <options> <pattern> <directory>

Например, в вашем случае вы можете пойти:

grep -wirnE \
  'Wed Oct 19 2(1:[0-5][0-9]:[0-5][0-9]|2:([0-2][0-9]:[0-5][0-9]|30:00)) .* 2016' .

(* изменено на .).

Таким образом, вместо того, чтобы grep передавал список сотен тысяч файлов, ему просто присваивается один каталог, и он использует свою рекурсивную обработку для поиска самих файлов.

5
ответ дан 22 May 2018 в 15:30

Когда вы используете звездочки в командной строке, они расширяются вашей оболочкой перед передачей в приложение. Если эта звездочка расширяется до 100+ файлов, вы на самом деле передаете в приложение более 100 аргументов. Не имеет большого значения аргументов, но ваш bash имеет ограничение в 500 000.

Поскольку вы уже используете -r (рекурсивный), можно переписать вызов grep на укажите только каталог, в который хотите выполнить поиск?

# recursive grep -R <options> <pattern> <directory>

Например, в вашем случае вы можете пойти:

grep -wirnE \ 'Wed Oct 19 2(1:[0-5][0-9]:[0-5][0-9]|2:([0-2][0-9]:[0-5][0-9]|30:00)) .* 2016' .

(* изменено на .).

Таким образом, вместо того, чтобы grep передавал список сотен тысяч файлов, ему просто присваивается один каталог, и он использует свою рекурсивную обработку для поиска самих файлов.

5
ответ дан 17 July 2018 в 22:56

Когда вы используете звездочки в командной строке, они расширяются вашей оболочкой перед передачей в приложение. Если эта звездочка расширяется до 100+ файлов, вы на самом деле передаете в приложение более 100 аргументов. Не имеет большого значения аргументов, но ваш bash имеет ограничение в 500 000.

Поскольку вы уже используете -r (рекурсивный), можно переписать вызов grep на укажите только каталог, в который хотите выполнить поиск?

# recursive grep -R <options> <pattern> <directory>

Например, в вашем случае вы можете пойти:

grep -wirnE \ 'Wed Oct 19 2(1:[0-5][0-9]:[0-5][0-9]|2:([0-2][0-9]:[0-5][0-9]|30:00)) .* 2016' .

(* изменено на .).

Таким образом, вместо того, чтобы grep передавал список сотен тысяч файлов, ему просто присваивается один каталог, и он использует свою рекурсивную обработку для поиска самих файлов.

5
ответ дан 24 July 2018 в 13:32

Другие вопросы по тегам:

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