![sudo 해결 방법: /bin/ls를 실행할 수 없습니다: 매개변수 목록이 너무 깁니다.](https://linux55.com/image/24039/sudo%20%ED%95%B4%EA%B2%B0%20%EB%B0%A9%EB%B2%95%3A%20%2Fbin%2Fls%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%3A%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%EB%AA%A9%EB%A1%9D%EC%9D%B4%20%EB%84%88%EB%AC%B4%20%EA%B9%81%EB%8B%88%EB%8B%A4..png)
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