# Пошук файлів

## Пошук файлів з певними атрибутами.

Для пошуку конкретних атрибутів необхідно ввести шаблон, який визначає які атрибути шукати і чи вони повинні бути включені чи виключені. Кожен атрибут представляється в наступному форматі:

`<attribute>+` чи `<attribute>-`

Знак плюс означає, що файл повинен містити набір атрибутів, знак мінус означає, що файл не повинен містити набір атрибутів.

Ідентифікатори `<атрибутів>` можуть бути наступні:

Для Windows:

Атрибути файлів:
`r - тільки для читання a - архівний h - прихований s - системний d - директорія l - символічне посилання t - тимчасовий p - розріджений c - стиснутий e - шифрований`

Для Unix:

Дозволи: | Типи файлів:
`ur - user read uw - user write ux - user execute gr - group read gw - group write gx - group execute or - others read ow - others write ox - others execute us - set user ID gs - set group ID sb - sticky bit` | `b - block c - character d - directory f - fifo l - symlink r - regular s - socket`

У Unix ви можете також використовувати вісімкове подання дозволів. Наприклад 0750 такий самий як ur, uw, ux, gr і gx разом взяті.

#### Розширені шаблони.

Деякі атрибути можуть бути об'єднані разом через зв’язок AND (І). Просто вкажіть який за яким має йти. Наприклад: `r+s+h+` відповідає файлам які має усі три встановлені атрибути: тільки для читання, прихований і системний.

Крім того, такі групи атрибутів AND (І) можуть бути об'єднані разом з зв’язком OR (АБО) . Це робиться за допомогою символу "|" (вертикальна риска). Наприклад: `r+|s+h+` відповідає файлам які мають встановлені атрибути: <list>

- тільки для читання
або
- прихований і системний
</list>

Можна інвертувати AND (І) послідовності за допомогою символа "!", поставленого на початку послідовності. Наприклад: `!r+s+h+` відповідає файлам які не містять жодного з троьх атрибутів: тільки для читання, прихований і системний. Відповідний файл може мати один, два чи не мати жодного встановленого атрибута але не може містити всіх їх. Заперечення відноситься тільки до послідовності AND (І), таким чином, шаблон `!r+|!s+h+` відповідає файлам з такими набром атрибутів: <list>

- не містять атрибутів тільки для читання (те саме, що і r-)
або
- не містять прихованих та системних атрибутів
</list>

Ви не можете використовувати круглі дужки, щоб відокремлювати послідовності.

#### Приклади.

Для Windows:

`a+s-h-` | відповідні файли мають встановлений архівний атрибут і не мають ні системнго ні прихованого набору атрибутів
`e+|c+` | відповідні файли мають бути стиснені або зашифровані (це атрибути NTFS)
`d-` | відповідні файли але не каталоги

Для Unix:

`uw+|gw+|ow+` | відповідні файли може записувати користувач, група або будь-хто інший
`222+` | відповідні файли можуть записуватися користувачем, і групою, і будь-ким іншим
`d+ox+` | відповідні каталоги доступні будь-кому
`!700+` | відповідні файли не повністю доступні для користувача

На головну