我有一个bash脚本,当文件超过一定大小时,它可以成功地删除一个或多个tomcat日志目录(我们运行多个实例)的catalina.out文件。我每晚都会把这个脚本作为一个cron工作来运行。本质上看起来是这样的:
find /apache-tomcat-blah*/. -name catalina.out -size +1000M -delete然而,我的问题是,我需要自动创建一个新的空的位置,一旦旧的一个被删除。
挑战是,我无法提前知道从哪个tomcat实例中删除了哪个catalina.out。另外,我不想假设我知道与/apache- tomcat */对应的所有tomcat实例。我们不时地改变它们。
我假设find命令知道它刚刚删除了什么(也许我不应该这样认为),这样理论上我就可以像以下所示的那样传输这些信息:
$ echo "" > /apache-tomcat-justDeletedFromDir/logs/catalina.out如果我能找到在字符串的apache-tomcat-justDeletedFromDir部分放什么。
如有任何意见,我将不胜感激。谢谢!
发布于 2017-03-08 15:28:23
为什么不直接用这样的方法:
for f in $(find /apache-tomcat-blah*/. -name catalina.out -size +1000M); do
rm $f
touch $f
done因此,您的find命令现在在子subshell $()中执行,bash脚本遍历输出(文件列表)并删除每个输出(通过rm)并创建一个新的(通过touch)。
如果您的文件中有空格,则需要小心处理上面的内容(注意)。
https://stackoverflow.com/questions/42675300
复制相似问题