
Когда я запускаю эту команду из 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