Список аргументов слишком длинный при запуске команды ls -d "$ PWD" / *

Я пытаюсь выполнить

ls -d "$PWD"/* > formmlFileList43k.list 

Но я получаю следующую ошибку:

bash: /bin/ls: Argument list too long

Я прочитал, используя трубу, не будет такого ограничения, как я могу использовать трубу, которая будет выполняться так же, как:

 ls -d "$PWD"/* > formmlFileList43k.list 

Любая помощь будет оценена

У вас слишком много элементов в каталоге. Это заставляет оболочку расширять * в аргумент командной строки, который превышает байты 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 

EDIT: @hagello написал важную заметку о именах файлов, начинающихся с точки. Эти файлы должны быть исключены из вывода find . Итак, правильное обходное решение:

 $ find "${PWD}" -mindepth 1 -maxdepth 1 '!' -name '.*' > formmlFileList43k.list