如何解决sudo:无法执行/bin/ls:参数列表太长

Rad*_*dek 4 ls sudo shell-script

当我从 php 运行此命令时

sudo -u db2inst1 ls -t /var/lib/edumate/bdrs/*/*/daily/*NODE* | sort -r

我收到 sudo: unable to execute /bin/ls: Argument list too long

ls 列出了我们为每个客户拥有的所有日常备份文件。客户在目录下有他们的bdrs目录。所以我猜文件的数量超过了允许的数量,因为它曾经可以正常工作。

有什么方法可以使用一个 shell 命令获取所有日常备份文件的列表吗?

Aar*_*sco 6

将其转换为,find以便扩展的文件名不会出现在实际命令中(现在 shell 是您不想要的“ globbing ”。

sudo -u db2inst1 find /var/lib/edumate/bdrs/ -ipath '/var/lib/edumate/bdrs/*/*/daily/*NODE*' | sort -r

  • 就是这样。在整个 find 命令完成之前它不会输出任何内容,并且可以传递它的完整参数列表进行排序。剪掉`| sort -r`,您可能会看到更明显的进展。 (2认同)