You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

find命令无法排除含特定子串的文件问题求助

find命令无法排除含特定子串的文件问题求助

嘿,我看了你的命令,问题出在逻辑运算符的优先级和括号范围上。你现在把排除条件和.css的匹配条件绑定在一起了,导致只有.css文件会应用排除备份的规则,其他扩展名的文件完全没被过滤!

咱们拆解下你原命令里的括号部分:

\( -iname \*.php -o -iname \*.html -o -iname \*.js -o -iname \*.css ! -iname  "*_bkp*" ! -iname  "*_backup" \)

这里的逻辑实际是:匹配.php,或者.html,或者.js,或者(.css且不含_bkp且不含_backup)——这显然不是你想要的效果,你需要的是所有匹配四个扩展名的文件,都要排除含_bkp或_backup的。

另外你还漏了一个细节:! -iname "*_backup"少了末尾的*,这样只能排除文件名恰好是_backup的文件,而不是包含这个子串的文件。

修正后的命令如下:

find /httpdocs/ -type f \( -iname \*.php -o -iname \*.html -o -iname \*.js -o -iname \*.css \) ! -iname "*_bkp*" ! -iname "*_backup*" -newermt 2022-12-27 -print0 | xargs -0 zip -r /UpdatedFiles.zip

简单解释下逻辑:

  • 先通过括号内的条件筛选出所有.php/.html/.js/.css格式的文件
  • 接着用! -iname "*_bkp*"排除所有文件名包含_bkp的文件
  • 再用! -iname "*_backup*"排除所有文件名包含_backup的文件
  • 然后筛选出2022-12-27之后修改过的文件
  • 最后打包成指定的zip文件

你试试这个命令,应该就能正确排除那些备份文件了。

备注:内容来源于stack exchange,提问作者Atul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:42:34