Список аргументов слишком длинная ошибка только тогда, когда я указываю каталог в команде du

Пакетncurses -binвключает toe, в котором перечислены описания терминалов.

Что касаетсяработы , это можно сделать, прочитав документацию по терминалу, в которой должно быть сказано, что он делает.

1
29.04.2020, 14:15
2 ответа

Ошибка «Слишком длинный список аргументов» возникает, когда расширенный список аргументов становится слишком длинным, т. е. когда длина строки, состоящей из всех имен файлов, заданных в качестве аргументов (, объединяется с длиной всех переменных окружения и их значений. )превышают определенное количество байтов.

Вы не получите эту ошибку с первой командой, потому что вам повезло.

Вы получаете эту ошибку со своей второй командой, потому что теперь каждый аргумент также включает строку /mydirectory/data/, а это означает, что список аргументов увеличивается как минимум на 18 байтов на аргумент . ], или 18 КБ на 1000 файлов.

Это можно обойти, выполнив сначалаcd /mydirectory/data:

( cd /mydirectory/data/ && du -c *.bin... )

(круглая скобка означает, что cdизменяет текущий каталог только для этой одной команды, поэтому нет необходимости «cdназад»)

На данный момент это будет работать, но все равно сломается, если вы добавите еще много файлов, соответствующих *.bin. В этом случае вы можете использовать немного более сложный подход :

.
find /mydirectory/data -maxdepth 1 -type f -name '*.bin' -exec du -c {} + |
awk '/total/ { sum += $1 } END { print sum }'

Запускается duдля максимально возможного количества файлов в вашем каталоге в пакетном режиме. grepвключен в программу awk(никогда не было веских причин кормить awkвыводом grep), а программа awkтеперь выполняет простую сумму, которая выводится в конце.

Нам нужна программа awkдля вычисления суммы, потому что команда duбудет выполняться более одного раза, создавая несколько строк total.

4
19.03.2021, 02:20
find /mydirectory/data -iname "*.bin" -maxdepth  1 |xargs du -c |
awk '{print $1 }'|xargs |tr " " "+" |bc

-1
19.03.2021, 02:20

Теги

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