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

관련 정보