![Filezilla 正则表达式用于过滤除一个之外的所有子目录](https://linux22.com/image/1443120/Filezilla%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%94%A8%E4%BA%8E%E8%BF%87%E6%BB%A4%E9%99%A4%E4%B8%80%E4%B8%AA%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%AD%90%E7%9B%AE%E5%BD%95.png)
我尝试让 filezilla 过滤掉某个文件夹下的所有子文件夹,只留下一个,但没有成功。我的树如下所示:
css/
|--many files and dirs...
js/
|--many files and dirs...
script/
|--dist/
|--many files and dirs...
|--less/
|---many files and dirs...
|--fonts/
|---many files and dirs...
|--Gruntfile.js
|--something.json
|--many other files...
index.html
我希望它变成:
css/
|--many files and dirs...
js/
|--many files and dirs...
script/
|--dist/
|--many files and dirs...
index.html
我发现这个正则表达式在理论上有效:folder\/(?!sub1)[\/a-zA-Z]+
但是 Filezilla 仅支持 POSIX 扩展正则表达式,所以它不起作用。
编辑
在 Filezilla 中创建过滤器,转到
View > Filename filters... > Edit filter rules... > New
显然,如果有人不使用正则表达式,但使用 Filezilla 的预定义条件,那么对我来说是一样的
答案1
我不知道 Filezilla 是如何工作的,但其(?!sub1)
构造是一种负向后视,意思是“仅当前一个单词不是时才匹配” sub1
。POSIX ERE 不支持环视,因此您需要使用不同的方法。例如,您可以使用“过滤掉与以下任何一项匹配的任何项目”设置过滤器,并使用以下正则表达式:
.*sub[2-9].*
这意味着“匹配任意字符,然后sub
跟 2 到 9 之间的任意数字,然后再次跟任意字符。这将过滤掉所有不需要的sub
文件夹。请注意,该正则表达式还将排除sub11
,我不知道这对您来说是否是个问题。
如果您的实际目录名称不同,则需要采用不同的方法。在这种情况下,请编辑您的问题并包含真实的文件和目录名称。