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

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

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

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

bash: /bin/ls: Argument list too long

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

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

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

One Solution collect form web for “Список аргументов слишком длинный при запуске команды ls -d "$ PWD" / *”

У вас слишком много элементов в каталоге. Это заставляет оболочку расширять * в аргумент командной строки, который превышает байты 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 
  • Самый дешевый способ найти самый старый файл (рекурсивно) из каталога с большой нагрузкой
  • Ожидайте парики, когда я использую одинарную кавычку в
  • MacOsx - Shell - список всех .php-файлов и их восьмеричных разрешений внутри папки specificc
  • Linux ls для отображения только даты и размера имени файла
  • Как получить относительные пути с помощью ls?
  • Можно ли изменить интервал между файлами с помощью ls
  • Нестандартная сортировка вывода ls
  • sudo ls не показывает скрытые файлы в Linux
  • Показывать только скрытые файлы (файлы точек) в псевдониме ls
  • Как вы можете группировать символические ссылки с каталогами в выводе `ls`, но сказать разницу?
  • Почему команда ls не перечисляет огромные файлы?
  • Linux и Unix - лучшая ОС в мире.