/usr/bin/cp (&find ):Слишком длинный список аргументов

Вы можете указать yum устанавливать отдельные файлы. Для начала потребуется больше времени, так как теперь он должен загружать гораздо большие списки файлов из репозиториев, но он выполнит свою работу.

yum reinstall /lib64/libperl.so
-2
06.08.2020, 00:46
2 ответа

Замена сложной команды копирования:

tar -cf - -C /home/auser/data. | tar xpf - -C /home/auser/data2
-1
18.03.2021, 23:14

Вместо того, чтобы пробовать какие-то обходные пути, необходимо понять, в чем заключается ошибка. Ошибка связана с тем, что данный аргумент превысил максимальную длину аргумента до вызова команды.

Это может произойти потому, что

  • Расширение оболочки дало слишком длинный список аргументов
  • Процесс (, подобный find), вызвал функцию из семейства exec, передав слишком длинный список аргументов.

Команда getconf ARG_MAXсообщает вам максимальную длину аргументов.

Команда

cp $(git diff --name-only branch2 force-app/)...

означает, что команда gitвыполняется, а затем ее вывод передается в качестве аргументов в cp. Если этот вывод превышает максимальную длину аргументов, вы получаете указанную ошибку.

Команда

find... -exec cp -t target {} +

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

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

Как отметил @AaronD.Marasco в своем комментарии:

find... -print0 | xargs -0 cp {} target

(xargsзаботится о максимальной длине аргумента. Обратите внимание, что фигурные скобки здесь являются аргументом xargs, а не find.но они имеют то же значение ).

Или с заменой процесса (в этом случае менее эффективно):

while IFS= read -d $'\0' -r Filename; do
  # do something with $Filename:
  cp "$Filename" target
done < <(find... -print0)

Для получения дополнительной информации обратитесь к справочным страницам findи xargs.

-1
18.03.2021, 23:14

Теги

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