我正在尝试创建一个for循环来删除超过15天的日志文件。以下是我的剧本:
#!/bin/sh
path="/home/test"
logpath="$path/logs"
for logfile in `find $logpath -mtime +14 -type f -name *.log`
do
echo "Deleting Log File: " $logfile
rm -rf $logfile
done
它不断抛出错误:
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
有什么想法吗?
答案 0 :(得分:4)
请尝试这个 - 添加单引号
#!/bin/sh
path="/home/test"
logpath="$path/logs"
for logfile in `find $logpath -mtime +14 -type f -name '*.log'`
do
echo "Deleting Log File: " $logfile
rm -rf $logfile
done
答案 1 :(得分:2)
您可以使用exec
的{{1}}参数来摆脱for循环:
find
或者像@Patryk Obara所说:
find $logpath -mtime +14 -type f -name '*.log' -exec rm -rf {} \;
隐式启用find $logpath -mtime +14 -type f -name '*.log' -delete
。
你可以这样测试:
-depth
答案 2 :(得分:0)
Logrotate是这类工作的更好选择,这里是它的文档链接 - http://www.linuxcommand.org/man_pages/logrotate8.html