我正在尝试执行
ls -d "$PWD"/* > formmlFileList43k.list
但我收到以下错误:
bash: /bin/ls: Argument list too long
我读过使用管道不会有这样的限制,我如何使用管道来完成相同的任务:
ls -d "$PWD"/* > formmlFileList43k.list
任何帮助,将不胜感激
答案1
目录中的项目太多。这会导致 shell 扩展*
为超过 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