Вы не пропускаете каталоги, которые не соответствуют даже при использовании --prune
.
-P
действительно работает иначе, чем ожидалось при использовании его с именами в папках и параметром --matchdirs
.
Из документов 1.8.0:
- matchdirs:
В случае совпадения с именем каталога, сопоставление отключено для содержимого каталога . Если используется параметр --prune, пустые папки, соответствующие шаблону, не удаляются.
То есть вы включаете несопоставленные каталоги , разница составляет только все подходящие каталоги показывают все их содержимое .
-
Пример:
Содержание:
tree
.
├── abc
│ ├── foo.txt
│ └── xyz.txt
├── abc.txt
├── xyz
│ ├── abc.txt
│ └── bar.txt
└── xyz.txt
2 directories, 6 files
Matchdirs и обрезать, по-прежнему показывая несоответствующие папки.
tree -P "x*" --matchdirs --prune
.
├── abc
│ └── xyz.txt
├── xyz
│ ├── abc.txt
│ └── bar.txt
└── xyz.txt
2 directories, 4 files
Несмотря на то, что я использовал --prune
и --matchdirs
, папка, не получившая соответствия, все равно отображается. Это потому, что файл в папке соответствует параметру -P
.
Вывод:
-P не для включения только имен папок, соответствующих строке.