Filezilla 正则表达式用于过滤除一个之外的所有子目录

Filezilla 正则表达式用于过滤除一个之外的所有子目录

我尝试让 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,我不知道这对您来说是否是个问题。

如果您的实际目录名称不同,则需要采用不同的方法。在这种情况下,请编辑您的问题并包含真实的文件和目录名称。

相关内容