首页 > 解决方案 > 带有正则表达式的 zip 文件夹

问题描述

有以点和随机字符串结尾的文件夹我只需要压缩那些在点后有两个字母的文件夹

文件夹的示例列表是:

`ls`

1113.qy 213cqecqe.cm ADss.BS ADss.QQ ADss.po a123.qqq aedrvrvr.aa aefqe.11 ghtyeu.nn qevaevbae ghtyeu.yg ADss.popoqoQWE ADSD.QQ ADss.as
adad.qqq aedrvrvr.cm asdu.wc

下面的 grep cmd 完全符合我的要求

`ls -a | grep -E '\.[A-Za-z]{2}$'`

.asdas.bC 1113.qy 213cqecqe.cm ADSD.QQ ADss.Cc ADss.QQ ADss.as ADss.po aedrvrvr.aa aedrvrvr.cm asdu.wc ghtyeu.nn ghtyeu.yg

在压缩此类文件夹时,我在 OSX 终端上出现错误,尝试了多个选项但得到相同的错误“名称不匹配”

zip -r ~/Desktop/33.zip ~/test124/.[A-Za-z{2}$]*

zip -r ~/Desktop/33.zip ~/test124/'\.[A-Za-z{2}$]*'

zip -r ~/Desktop/33.zip ~/test124/'\.[A-Za-z]{2}$*'

zip -r ~/Desktop/33.zip ~/test124/".[A-Za-z{2}]$*"

zip -r ~/Desktop/33.zip ~/test124/".[A-Za-z{2}]$"

其他一些 cmd,我尝试压缩所有文件夹,例如

zip -r ~/Desktop/33.zip ~/test124/*.[A-Za-z{2}$]*

我错过了什么吗,提前谢谢你

zip -r ~/Desktop/33.zip ~/test124/.[A-Za-z{2}$]*

zip -r ~/Desktop/33.zip ~/test124/'\.[A-Za-z{2}$]*'

zip -r ~/Desktop/33.zip ~/test124/'\.[A-Za-z]{2}$*'

zip -r ~/Desktop/33.zip ~/test124/".[A-Za-z{2}]$*"

zip -r ~/Desktop/33.zip ~/test124/".[A-Za-z{2}]$"

其他一些 cmd,我试过压缩所有文件夹,比如

zip -r ~/Desktop/33.zip ~/test124/*.[A-Za-z{2}$]*

我希望压缩的文件夹具有 . 和两个字符

1113.qy 213cqecqe.cm ADSD.QQ ADss.BS ADss.Cc ADss.QQ ADss.as ADss.po aedrvrvr.aa aedrvrvr.cm asdu.wc ghtyeu.nn ghtyeu.yg

标签: regexbashzip

解决方案


zip命令不识别regex。即使是这样,您的语法也会在 shell 中扩展文件名,而不是 zip。

以下将起作用:

zip -r ~/Desktop/33.zip ~/test24/*.[A-Za-z][A-Za-z]

为了使用regex,您还可以这样说:

find ~/test24 -type f -regextype posix-egrep -regex ".+\.[A-Za-z]{2}" -print0 | xargs -0 zip -r ~/Desktop/33.zip

希望这可以帮助。


推荐阅读