![运行 ls -d "$PWD"/* 命令时参数列表太长](https://linux22.com/image/85599/%E8%BF%90%E8%A1%8C%20ls%20-d%20%22%24PWD%22%2F*%20%E5%91%BD%E4%BB%A4%E6%97%B6%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8%E5%A4%AA%E9%95%BF.png)
我正在尝试执行
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