
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 bdrs
directorio. 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 find
para 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 -t
a , ya que no te importa su orden de clasificación.ls