Завершение zsh :Предлагает только определенные расширения файлов для завершения

В зависимости от вашего варианта использования другой подход может состоять в том, чтобы сначала собрать все файлы-кандидаты в одном каталоге, жестко связав его, а затем жестко связав файлы, которые вас особенно интересуют.

Например,

mkdir -pm 0700 by-inode/{0..999}
find <path> ! -type d -printf "%i/%p\0" |
  while IFS=/ read -rd '' i n; do
    ln "$n" "by-inode/$((i/1000))/$i"
  done

(Предполагая, что все ваши индексные дескрипторы меньше 1 000 000, при необходимости создайте дополнительные каталоги ).

После этого ваши индексные дескрипторы группируются по 1000 -мудр и собираются в дереве by-inode/. Оттуда вы можете связать их по мере необходимости.

Обратите внимание, что это означает, что удаление файлов в разделе <path>не освободит пространство из-за этой дополнительной жесткой ссылки.

1
22.01.2021, 10:06
1 ответ

Проще всего использовать настройку ignored-patterns:

.
zstyle ':completion::complete:mpv:*' ignored-patterns '^(*.(mp4|mp3))'

Однако это также будет игнорировать каталоги , не заканчивающиеся на .mp3или .mp4.

Если вы по-прежнему хотите, чтобы каталоги заполнялись как обычно, вам следует использовать более сложную настройку file-patternsвместо:

zstyle ':completion::complete:mpv:*' file-patterns '
  *(D-/):local-directories:"local directory" 
  *.(mp3|mp4)(D-^/):media-files:"media file"
'

Объяснение (D-/)и (D-^/)см. в разделе руководства Zsh, посвященном квалификаторам glob .

3
18.03.2021, 22:35

Теги

Похожие вопросы