DC - Поиск файлов

# 2.3. Поиск файлов

## Содержание

1. Поиск файлов с определёнными атрибутами
2. Расширенные паттерны
3. Примеры

## 1. Поиск файлов с определёнными атрибутами

Для поиска по атрибутам необходимо использовать шаблон, который определяет, какие атрибуты искать и их состояние (установлены ли они или сняты).

Одиночный атрибут представляется в следующем формате:

`<атрибут>+` или `<атрибут>-`

Знак плюс означает, что у файл должен быть установлен этот атрибут, знак минус — наоборот, что у файла этот атрибут не должен быть установлен.

Возможные атрибуты представлены в таблице:

Атрибуты в Windows
Атрибут | Что обозначает
--- | ---
r | только для чтения
a | архивный
h | скрытый
s | системный
d | каталог
l | символьная ссылка
t | временный
p | разряженный
c | сжатый (имеется в виду сжатие NTFS)
e | зашифрованный

Атрибуты в Unix/Linux (права доступа)
Права доступа | Что обозначает
--- | ---
ur | пользователь (владелец): чтение
uw | пользователь (владелец): запись
ux | пользователь (владелец): выполнение
gr | группа: чтение
gw | группа: запись
gx | группа: выполнение
or | остальные: чтение
ow | остальные: запись
ox | остальные: выполнение
us | установка ID пользователя во время выполнения (SUID)
gs | установка ID группы во время выполнения (SGID)
sb | бит сохранения задачи/закрепления в памяти (sticky bit)

Атрибуты в Unix/Linux (типы файлов)
Типы файлов | Что обозначает
--- | ---
b | блочное физическое устройство
c | символьное физическое устройство
d | каталог
f | именованный канал (или буфер FIFO)
l | символьная ссылка
r | обычный файл
s | сокет (socket)/доменное гнездо

В Unix/Linux также можно использовать восьмеричное представление разрешений. Например, 0750 — то же самое, что и комбинация `ur`, `uw`, `ux`, `gr` и `gx`.

(наверх)

## 2. Расширенные паттерны

Некоторые атрибуты могут быть объединены в группу с отношением И, просто укажите один шаблон за другим.

Например: `r+s+h+` соответствует файлам, у которых установлены все три атрибута: только для чтения, системный и скрытый.

Кроме того, такие группы атрибутов могут быть объединены вместе с отношения ИЛИ. Это делается с помощью символа "|" (вертикальная черта).

Например: `r+|s+h+` соответствует файлам, у которых:

- или установлен атрибут только для чтения
- или установлены атрибутами системный и скрытый.

В шаблонах, объединённых в группу с отношением И, можно использовать оператор "не равно", добавив символ "!" в начале.

Например: `!r+s+h+` соответствует файлам, которые не имеют всех трёх атрибутов: только для чтения, системный и скрытый. Соответствующий файл может не иметь ни одного, иметь один или два из этого набора атрибутов, но не все сразу.

Оператор "не равно" можно применять только к группе атрибутов с отношением И, например, шаблон `!r+|!s+h+` соответствует файлам, у которых:

- или не установлен атрибут только для чтения (аналогично `r-`)
- или не установлены атрибуты системный и скрытый.

Вы не можете использовать скобки для разделения групп.

(наверх)

## 3. Примеры

Примеры в Windows
Пример | Как интерпретировать
--- | ---
a+s-h- | соответствует файлам, имеющим установленный атрибут архивный и снятые системный и скрытый
e+|c+ | соответствует файлам, имеющим установленный атрибут сжатый или зашифрованный (это атрибуты файловой системы NTFS)
d- | соответствует файлам, но не каталогам

Примеры в Unix/Linux
Пример | Как интерпретировать
--- | ---
uw+|gw+|ow+ | соответствует файлам, которые доступны для записи либо пользователю, либо группе, либо остальным
222+ | соответствует файлам, которые доступны для записи и пользователю, и группе, и остальным
d+ox+ | соответствует каталогам, которые доступны всем
!700+ | соответствует файлам, которые не являются полностью доступными для пользователя

(наверх)