sudo 해결 방법: /bin/ls를 실행할 수 없습니다: 인수 목록이 너무 깁니다.

sudo 해결 방법: /bin/ls를 실행할 수 없습니다: 인수 목록이 너무 깁니다.

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 글로벌 한정자정렬 순서를 역 사전식 이름 순서로 변경합니다.

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

그런데 정렬 순서에 관심이 없기 때문에 -t에 전달할 필요가 없습니다 .ls

관련 정보