Ключ -P не работает для команды дерева - PullRequest
0 голосов
/ 01 ноября 2018

Я использую:

tree . --prune --matchdirs -P dir-name

, что соответствует:

. / / DIR-имя каталога

но

tree . --prune --matchdirs -P dir-*

не совпадает.

Что-то не так с шаблоном?

Я имею в виду https://manned.org/tree/11711706 но с использованием MacOSX.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Вы не пропускаете каталоги, которые не соответствуют даже при использовании --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 не для включения только имен папок, соответствующих строке.

0 голосов
/ 01 ноября 2018

Вы пытались заключить шаблон в одинарные кавычки?

tree . --prune --matchdirs -P 'dir-*'

...