【发布时间】:2017-02-18 00:59:48
【问题描述】:
我正在尝试运行此命令,但出现 arg list too long 错误:
find /dir1/dir2/dir3/dir4/dir5 -name *.cdb -type f -mmin +30 -delete
错误是:
/usr/bin/find: Arg list too long.
可能 find 命令返回的文件太多。 有关如何克服此问题的任何建议?
谢谢
【问题讨论】:
我正在尝试运行此命令,但出现 arg list too long 错误:
find /dir1/dir2/dir3/dir4/dir5 -name *.cdb -type f -mmin +30 -delete
错误是:
/usr/bin/find: Arg list too long.
可能 find 命令返回的文件太多。 有关如何克服此问题的任何建议?
谢谢
【问题讨论】:
首先,您应该转义星号以防止外壳扩展它:
find /dir1/dir2/dir3/dir4/dir5 -name \*.cdb -type f -mmin +30 -delete
或
find /dir1/dir2/dir3/dir4/dir5 -name '*.cdb' -type f -mmin +30 -delete
【讨论】:
Bash globbing 正在扩展您的 *.cdb 参数,并且您向 find 命令发送了太多参数。
尝试为该参数添加引号以避免外壳扩展并将通配任务传递给find 命令:
find /dir1/dir2/dir3/dir4/dir5 -name '*.cdb' -type f -mmin +30 -delete
如果您仍然需要增加最大参数限制,您可以使用ulimit -s:
ulimit -s 65536
【讨论】: