我正在尝试从应用服务器列出生成的日志和zip文件。
我用下面的表达方式。但看起来有些不对劲。你能帮助正规表达吗?
ROOT_DIR=applications/jboss-as/servers/
find $ROOT_DIR -name '*[0-9]*[zip|log]' -mtime +5
最后,我希望使用命令
删除这些文件find $ROOT_DIR -name '*[0-9]*[zip|log]' -mtime +5 -exec rm {} \;
答案 0 :(得分:1)
第一个命令将找到它们并显示。
find $ROOT_DIR ! -readable -prune -mtime +5 -type f | egrep -e "^.*\.(log|zip)$"
第二个将删除所有
find $ROOT_DIR ! -readable -prune -mtime +5 -type f | egrep -e "^.*\.(log|zip)$" | xargs -L 1 rm
答案 1 :(得分:0)
你可以这样做(大多数版本的find
):
find "$ROOT_DIR" '(' -name '*[0-9]*.log' -o -name '*[0-9]*.zip' ')' -mtime +5 -exec rm {} +
+
来自POSIX 2008,意味着"运行exec&#d; d命令,文件名和方便的文件名一样多。而较旧的替代';'
(或\;
)表示"每个文件名运行一次exec&#d; d命令"。
如果你有GNU find
,你可以使用正则表达式的各种方言:
find "$ROOT_DIR" -regex '.*\.\(zip\|bz2\)' -mtime +5 -delete
这使用默认的正则表达式模式;您可以使用一些替代方法来避免使用这么多反斜杠。 -delete
选项使用unlink()
系统调用而不是调用外部命令;因此,它更有效率。