для файла х /.{[^.],.?}*
Это будет соответствовать, например, .а .zoo.17 ... ..0 ..hello
, но не будет соответствовать . .. файлы-не-начиная с-точек
разбив его ...
на {а, Ь} делает чередование, первое сопрягать, то соответствующий б. Таким образом, мы могли бы также написать выше, как так:
для файла в х /.[^.]* х /..?*
Итак, давайте рассмотрим первый:. [. ^] * код [ ^.] - это инвертированный класс символов - без карат он будет соответствовать только точке;^инвертирует его так, чтобы он соответствовал любому символу, кроме точки. После этого есть звезда, которая будет соответствовать 0 или более символам любого типа Итак, этот шаблон. [^.] * Будет соответствовать файлам с именами, которые - начните с. - не менее двух символов - второй символ не является. Из приведенных выше примеров, это соответствует: .а .zoo.17
Теперь давайте рассмотрим второй: .. * The? соответствует любому символу (но не 0 символов). Мы знакомы со звездой. ? Так что этот рисунок .. * будет соответствовать файлы с именами, которые - начинаются с .. - по крайней мере, три символов Из приведенных выше примеров, это соответствует: ... ..0 ..hello
Из-за того, как работает чередование, сначала будут сопоставляться файлы в первой группе - они не будут сопоставлены с файлами во второй группе.
Отлично :) спасибо – theosp
Это, наверное, самый легкий для скрипта - для чего-то более легкого в использовании здесь и там в командной строке, см. Мой ответ. 'extglob' довольно удобен. – Cascabel
Чтобы действительно ответить на вопрос, он должен быть: GLOBIGNORE = "* /.: */.." (для работы за пределами текущей $ PWD) – theosp