我的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
排除.
目录并修剪所有其余目录,以便它不会进一步下降。
查看此页面以获取更多信息:将搜索限制为可移植的当前目录