我正在尝试运行此脚本:
alias logs="cd L:/"
find $logs -name '*system.log*' -mtime +14 -exec rm {} \;
但是得到这个错误:find:缺少`-exec'的参数。我尝试过查看与此相关的其他帖子,但无法正常工作。我正在使用cygwin在Windows上运行此脚本。
答案 0 :(得分:0)
如果您创建了任何别名为log
的别名,那么要使用它,您应该使用$logs
而不是logs
此外,也许您正在使用的发现是Windows
而不是Cygwin
的发现。如果您键入“哪个发现”,这一点很清楚
答案 1 :(得分:0)
首先,一些小的修复程序:
#!/bin/sh
logs=/cygdrive/l
find "$logs" -name '*system.log*' -mtime +14 -exec rm -- {} +
...但是那些方法不能解决您的实际问题(导致-exec
报告错误的问题),几乎可以肯定是脚本中存在DOS换行符。
find -exec
在看不到仅包含确切字符串;
的参数时报告有问题的错误。除引号外,\;
应该是该参数-,但如果文件中包含隐藏字符,则可以不同。 DOS文本文件在需要UNIX文本文件的程序打开时似乎具有隐藏字符,因为这两种格式具有不同的行分隔符。
要解决此问题,请在本机UNIX编辑器(如vim)中打开文件,运行:set fileformat=unix
并保存;或使用dos2unix
进行就地转换。