Como resolver sudo: impossível executar / bin / ls: Lista de argumentos muito longa

3

Quando eu executo este comando do php

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

Eu recebo sudo: unable to execute /bin/ls: Argument list too long

ls lista todos os arquivos de backup diários que temos para cada cliente. O cliente tem seu diretório no diretório bdrs . Então, acho que o número de arquivos ficou maior do que o permitido porque costumava funcionar corretamente.

Existe alguma maneira de obter uma lista de todos os arquivos de backup diários usando um comando shell?

    
por Radek 18.07.2012 / 02:59

2 respostas

1

É bem mais fácil com o zsh. Seu On qualificador glob altera a ordem de classificação para ordem de nome lexicográfico reversa.

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

Não há sentido em passar -t para ls , a propósito, já que você não se importa com a ordem de classificação.

    
por 19.07.2012 / 02:50
6

Converta-o para find para que os nomes dos arquivos expandidos não estejam no comando atual (agora o shell é " globbing " que você não quer.

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

    
por 18.07.2012 / 03:43