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