So lösen Sie „sudo: /bin/ls kann nicht ausgeführt werden: Argumentliste zu lang“

So lösen Sie „sudo: /bin/ls kann nicht ausgeführt werden: Argumentliste zu lang“

Wenn ich diesen Befehl von PHP aus ausführe

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

ich erhaltesudo: unable to execute /bin/ls: Argument list too long

ls listet alle täglichen Backup-Dateien auf, die wir für jeden Kunden haben. Der Kunde hat sein Verzeichnis unter dem bdrsVerzeichnis. Ich vermute also, dass die Anzahl der Dateien größer als zulässig geworden ist, weil es vorher korrekt funktioniert hat.

Gibt es eine Möglichkeit, mit einem Shell-Befehl eine Liste aller täglich gesicherten Dateien abzurufen?

Antwort1

Konvertieren Sie es findso, dass die erweiterten Dateinamen nicht im eigentlichen Befehl vorkommen (derzeit lautet die Shell "Glotzen", was Sie nicht wollen.

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

Antwort2

Mit zsh ist es einfacher.On Glob-Qualifiziererändert die Sortierreihenfolge in die umgekehrte lexikografische Namensreihenfolge.

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

Es hat übrigens keinen Sinn, -tan zu übergeben , da die Sortierreihenfolge für Sie egal ist.ls

verwandte Informationen