실행하려고 하는데
ls -d "$PWD"/* > formmlFileList43k.list
하지만 다음과 같은 오류가 발생합니다.
bash: /bin/ls: Argument list too long
파이프를 사용하면 그러한 제한이 없다는 것을 읽었습니다. 파이프를 사용하여 동일한 작업을 어떻게 수행할 수 있습니까?
ls -d "$PWD"/* > formmlFileList43k.list
어떤 도움이라도 대단히 감사하겠습니다.
답변1
디렉토리에 항목이 너무 많습니다. 이로 인해 쉘이 *
ARG_MAX 바이트를 초과하는 명령줄 인수로 확장됩니다.
$ grep ARG_MAX /usr/include/linux/limits.h
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
find
다음 해결 방법을 사용하는 것이 좋습니다 .
$ find "${PWD}" -mindepth 1 -maxdepth 1 > formmlFileList43k.list
편집하다:@hagello는 점으로 시작하는 파일 이름에 대한 중요한 메모를 작성했습니다. 이러한 파일은 find
출력에서 제외되어야 합니다. 따라서 올바른 해결책은 다음과 같습니다.
$ find "${PWD}" -mindepth 1 -maxdepth 1 '!' -name '.*' > formmlFileList43k.list