使用 find 时,arg 列表太长错误

使用 find 时,arg 列表太长错误

我的find命令如下:

find /jobs/logs/* -prune -name '*.log' -type f -mtime +1 |
    while read LOGFILE
    do
        echo $LOGFILE
    done

由于以下错误,此操作失败:

/usr/bin/find: arg list too long

谁能建议一种方法来解决这个问题?

(这是继续我之前的问题.)

答案1

find我们来遍历目录,这就是它的工作!建立在我的之前的回答:

find /jobs/logs/. -name . -o -type d -prune -o
                  -type f -mtime +1 -exec sh -c 'echo "$0"' {} \;

顺便说一句,请注意,我曾经-exec调用find一个命令——这就是它的用途。

另外,请注意,read LOGFILE确实不是读取一行输入:它会去除前导空格并解释反斜杠。读取一行的可靠方法是IFS= read -r LOGFILE.

答案2

尝试将find命令更改为:

find /jobs/logs/. ! -name . -prune -name '*.log' -type f -mtime +1 

这告诉find排除.目录并修剪所有其余目录,以便它不会进一步下降。

查看此页面以获取更多信息:将搜索限制为可移植的当前目录

相关内容