Как решить проблему sudo: невозможно выполнить /bin/ls: слишком длинный список аргументов

Как решить проблему sudo: невозможно выполнить /bin/ls: слишком длинный список аргументов

Когда я запускаю эту команду из php

sudo -u db2inst1 ls -t /var/lib/edumate/bdrs/*/*/daily/*NODE* | sort -r

я получаюsudo: unable to execute /bin/ls: Argument list too long

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

Есть ли способ получить список всех ежедневных файлов резервных копий с помощью одной команды оболочки?

решение1

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

sudo -u db2inst1 find /var/lib/edumate/bdrs/ -ipath '/var/lib/edumate/bdrs/*/*/daily/*NODE*' | sort -r

решение2

С zsh все гораздо проще.On квалификатор globизменяет порядок сортировки на обратный лексикографическому порядку имен.

sudo -u db2inst1 zsh -c 'print -l /var/lib/edumate/bdrs/*/*/daily/*NODE*(On)'

Кстати, нет смысла переходить -tк , поскольку вас не волнует порядок сортировки.ls

Связанный контент