Cómo resolver sudo: no se puede ejecutar /bin/ls: lista de argumentos demasiado larga

Cómo resolver sudo: no se puede ejecutar /bin/ls: lista de argumentos demasiado larga

Cuando ejecuto este comando desde php

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

Recibosudo: unable to execute /bin/ls: Argument list too long

ls enumera todos los archivos de respaldo diarios que tenemos para cada cliente. El cliente tiene su directorio debajo del bdrsdirectorio. Así que supongo que la cantidad de archivos aumentó más de lo permitido porque solía funcionar correctamente.

¿Hay alguna manera de obtener una lista de todos los archivos de respaldo diarios usando un comando de Shell?

Respuesta1

Conviértalo findpara que los nombres de archivos expandidos no estén en el comando real (en este momento el shell es "globo"lo cual no quieres.

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

Respuesta2

Es bastante más fácil con zsh. EsOn calificador globalcambia el orden de clasificación al orden lexicográfico inverso de los nombres.

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

Por cierto, no tiene sentido pasar -ta , ya que no te importa su orden de clasificación.ls

información relacionada