首页 > 解决方案 > 为什么我的 find cmd 在手动执行而不是从脚本执行时会产生结果

问题描述

我正在从命令行执行此命令

find -L /lorem/ipsum/dolor/ /lorem/ipsum1/dolor/ /lorem3/ipsum/dolor/  -regex '.*[0-9]_[0-9].*log.*?' -mtime +14 -type f | wc -l

它产生

70

但是当我在脚本中运行它时它不会。特殊之处在于,在脚本中我将路径作为 GLOB 值传递,并 find 为我解决了它。那是

CLEANUPFOLDER="/lorem/**/dolor/"

脚本中的命令:

find -L $CLEANUPFOLDER -mtime +14 -type f | wc -l

我试图在新脚本中复制已解决的发现并且它有效

标签: shell

解决方案


我忘了提的是,那时我正在路过

/lorem/ipsum/dolor/ /lorem/ipsum1/dolor/ /lorem3/ipsum/dolor/ -regex '.*[0-9]_[0-9]。日志。

作为命令的变量

喜欢

VAR1="/lorem/ipsum/dolor/ /lorem/ipsum1/dolor/ /lorem3/ipsum/dolor/ -regex '.*[0-9]_[0-9] .log. ?'"

找到 $VAR1 .....

现在的问题还在于,find 将“...or/”和“..-rege”之间的空格解释为参数之间的分隔符,但不知何故作为文件夹的一部分...所以 find 出错了,错误味精被隐藏了..

现在我这样做了

bash -c"find ....." 它立即工作....

谢谢大家,很抱歉对事情的解释不好:-(


推荐阅读