Описание тега app-drawer
С ЗШ
:
пользователи=(Пользователь1 Пользователь2)
# или пользователей=($(<userlist.txt))
# если userlist.txt содержит список пользователей, как отдельные слова
Дирс=(документы, фотографии ...)
найти ./$^пользователи/$Дирс^
То же самое с рыбой
:
пользователи Пользователь1 Пользователь2 ...
комплект документов Дирс фотографии
найти ./$пользователи/$Дирс
В рыбу
или ЗШ -о rcexpandparam
, массивы расширяться в дубль-расширение мода. В ЗШ
, то $^массива
синтаксис включает rcexpandparam
для этого единый массив расширения.
Ссылка на радиоуправляемый
немного вводит в заблуждение здесь. В то время как массив $^строка
в РК
/Эс
(где массив
- это (1 2)) будет расширяться как {1,2}строки
(и это причина, почему ЗШ
выбрал ^
для радиоуправляемый-как тип расширения в $^массив
), который не применяется для присоединения массивы вместе. В РК
, $массив1^$arrat2
(так же, как $массив1$массив2
) работает только для матриц одинакового размера и присоединяется к элементу по одному ((1 2)^(Б)
будет 1а, 2б
, а не 1а 1б 2а 2б
).
Обратите внимание, что это не подстановка, Пользователь1/документы
будут приняты, чтобы найти
независимо от того, существует ли этот файл или нет. Чтобы передать список этих файлов или каталогов, которые на самом деле существуют, в ЗШ
, вы могли бы сделать
найти ./$^пользователи/$^Дирс(Н)
который передает добавляет (Н)
Глоб классификатором для всех элементов в результате этого массива умножения, который имеет два эффекта:
- делает их шарики, а значит, они будут расширяться, чтобы соответствующие файлы
- если Глоб не соответствует файлам (они могут только либо 0, либо 1, так как нет шаблона в там), в результате Глоб вместо расширяет нечего.
В качестве альтернативы, вы могли бы пойти Глоб всю дорогу:
найти (Пользователь1|Пользователь2)/(документы|фотографии)
Или основанный на вашем примере:
взаимозачета extendedglob # лучший в ~/.zshrc
найти ./^(#я)(по умолчанию|общественности)/(документы|фото)
Или создать что Глоб на основе массивов с
найти (${(х:|:)~${(B)пользователи}})/${(х:|:)~${(б)изд}}
Где:
(б)
приводит подстановки операторов если какой-либо из элементов массива(Дж:|:)
к ним|
~
включается подстановка при расширении
Эти работы с произвольными именами файлов (кроме тех, начиная с -
как ограничение найти
).
Для этого с найти
будет очень сложно, особенно если вы хотите разрешить использование произвольных имен файлов. Но для относительно приручили, как те, по умолчанию
, общественных
...), вы могли бы попробовать:
Значение lc_all=C не найти . -имя . -о-пути './*/*' \( ! -путь './*/*/*' \
! документы-имя ! -имя картинки-чернослив -о-принт \) -о \
! по умолчанию название ! -имя -о-чернослив
(Эта штука дает мне головную боль).
Вот с помощью стандартных найти
синтаксис, если вы хотите без учета регистра, то вы можете использовать имя '[пп][ИИ][ВВ][Лл][второй][чч]'
, или если используете GNU найти
(которая вам кажется) или совместимый, использовать -имя_экземпляра общественности
.