我需要从项目的根文件夹中删除大量的.zip
和.apk
文件,我希望使用bash终端(MacOS X)。
到目前为止,我已成功使用两个命令:
$ find . -name \*.zip -delete
$ find . -name \*.apk -delete
但是我想用一个正则表达式来做这个:
$ find . -regex '\w*.(apk|zip)' -delete
但这个正则表达似乎不起作用,因为它删除了任何东西......我做错了什么?
更多信息:
我要删除的一个示例是android~1~1~sampleproject.zip
。
答案 0 :(得分:2)
UPDATE emp AS t1 INNER JOIN
(SELECT mgr FROM emp WHERE mgr = t1.empno) AS t2
SET sal = sal + 5000
WHERE t1.sal <50000;
$ find -E . -regex './[~a-zA-Z0-9]+\.(apk|zip)' -delete
尝试匹配整个文件名。因此,有必要使用find
我认为./
不支持find
\w
等。因此请将其替换为字符类。但\d
也不支持它们,因此您需要添加find
以启用扩展正则表达式。
-E解释正则表达式,然后将-regex和-iregex原色作为扩展(现代)正则表达式解释 - sions而不是基本的正则表达式(BRE)。 re_format(7)手册页完全描述了 - 垫。
示例强>
例如,请考虑以下命令
-E
<小时/> 注意以上答案专门针对BSD查找。如果您使用的是GNU查找,则它不支持
$ ls *.json
bower.json composer.json package.json
$ find -E . -regex "\./[a-zA-Z0-9]+\.(json)"
./bower.json
./composer.json
./package.json
选项,而是支持-E
。我可以将上面的例子重写为
-regextype posix-extended
答案 1 :(得分:1)
我会用:
find . -type f \( -name "*.zip" -o -name "*.apk" \) -delete