ÐепоÑÑедÑÑвенно ÐÐ°Ñ Ð° 6 ÑеÑÐ¸Ñ 2 ÑаÑÑÑ
Оглавление:
- Linux
find
командный синтаксис - Найти файлы по имени
- Найти файлы по расширению
- Поиск файлов по типу
- Найти файлы по размеру
- Поиск файлов по дате изменения
- Найти файлы по разрешениям
- Найти файлы по владельцу
- Найти и удалить файлы
- Вывод
Команда
find
является одним из самых мощных инструментов в арсенале системных администраторов Linux. Он ищет файлы и каталоги в иерархии каталогов на основе заданного пользователем выражения и может выполнять заданные пользователем действия для каждого соответствующего файла.
Вы можете использовать команду
find
для поиска файлов и каталогов по их разрешениям, типу, дате, владельцу, размеру и т. Д. Его также можно использовать в сочетании с другими инструментами, такими как
grep
или
sed
.
Linux
find
командный синтаксис
Общий синтаксис команды
find
выглядит следующим образом:
find
- Атрибут
options
управляет обработкой символьных ссылок, опций отладки и метода оптимизации. Атрибутpath…
определяет начальный каталог или каталоги, в которых find будет искать файлы. Атрибутexpression
состоит из опций, шаблонов поиска и действия, разделенные операторами.
Для поиска файлов в каталоге пользователь, вызывающий команду
find
должен иметь разрешения на чтение для этого каталога.
Давайте посмотрим на следующий пример:
find -L /var/www -name "*.js"
- Опция
-L
(параметры) указывает командеfind
следовать символическим ссылкам./var/www
Var/var/www
(путь…) указывает каталог, в котором будет производиться поиск. (Выражение)-name "*.js
указывает-name "*.js
find
искать файлы, заканчивающиеся на.js
(файлы JavaScript).
Найти файлы по имени
Поиск файлов по имени, вероятно, является наиболее распространенным использованием команды
find
. Чтобы найти файл по его имени, используйте опцию
-name
после имени файла, который вы ищете.
Например, для поиска файла с именем
document.pdf
в каталоге
/home/linuxize
вы должны использовать следующую команду:
find /home/linuxize -type f -name document.pdf
Чтобы запустить поиск без
-iname
регистра, измените опцию
-name
с
-iname
:
find /home/linuxize -type f -iname document.pdf
Команда выше будет соответствовать «Document.pdf», «DOCUMENT.pdf».. и т. Д.
Найти файлы по расширению
Поиск файлов по расширению аналогичен поиску файлов по имени. Например, чтобы найти все файлы, заканчивающиеся на
.log.gz
в
.log.gz
/var/log/nginx
вы можете использовать:
find /var/log/nginx -type f -name '*.log.gz'
Важно отметить, что когда вы используете подстановочный знак, вы должны либо заключить шаблон в кавычки, либо экранировать символ звездочки
*
с помощью обратной косой черты
\
чтобы она не интерпретировалась оболочкой.
Чтобы найти все файлы, которые не соответствуют регулярному выражению
*.log.gz
вы можете использовать опцию
*.log.gz
. Например, чтобы найти все файлы, которые не заканчиваются на
*.log.gz
вы должны использовать:
find /var/log/nginx -type f -not -name '*.log.gz'
Поиск файлов по типу
Иногда вам может потребоваться поиск файлов определенного типа, таких как обычные файлы, каталоги или символические ссылки. В Linux все является файлом.
Для поиска файлов по их типу используйте опцию
-type
и один из следующих дескрипторов, чтобы указать тип файла:
-
f
: обычный файлd
: каталогl
: символическая ссылкаc
: символьные устройстваb
: блочные устройстваp
: именованный канал (FIFO)s
: сокет
Например, чтобы найти все каталоги в текущем рабочем каталоге, вы должны использовать:
find. -type d
Распространенным примером может быть рекурсивное изменение разрешений на доступ к файлам сайта на
644
и разрешений на каталог на
755
с помощью команды
chmod
:
find /var/www/my_website -type d -exec chmod 0755 {} ;
find /var/www/my_website -type f -exec chmod 0644 {} ;
Найти файлы по размеру
Чтобы найти файлы по размеру файла, передайте параметр
-size
вместе с критериями размера. Вы можете использовать следующие суффиксы, чтобы указать размер файла:
-
b
: 512-байтовые блоки (по умолчанию)c
: байтыw
: двухбайтовые словаk
: килобайтыM
: мегабайтыG
: гигабайты
Следующая команда найдет все файлы размером
1024
байта в каталоге
/tmp
:
find /tmp -type f -size 1024c
Команда
find
также позволяет вам искать файлы, которые больше или меньше указанного размера.
В следующем примере мы ищем все файлы
1MB
менее 1
1MB
в текущем рабочем каталоге. Обратите внимание на символ минус перед значением размера:
find. -type f -size -1M
find. -type f -size +1M
Вы даже можете искать файлы в диапазоне размеров. Следующая команда найдет все файлы от
1
до
2MB
:
find. -type f -size +1M -size 21M
Поиск файлов по дате изменения
Команда
find
также может выполнять поиск файлов по времени их последнего изменения, доступа или изменения.
То же, что и при поиске по размеру, используйте символы «плюс» и «минус» для «больше чем» или «меньше чем».
Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в
/etc/dovecot/conf.d
который заканчивается на
.conf
и которые были изменены за последние пять дней с помощью:
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
Вот еще один пример фильтрации файлов по дате модификации с использованием опции
-daystart
. Команда ниже выведет список всех файлов в каталоге
/home
которые были изменены
30
или более дней назад:
find /home -mtime +30 -daystart
Найти файлы по разрешениям
Опция
-perm
позволяет вам искать файлы на основе прав доступа к файлам.
Например, чтобы найти все файлы с разрешениями ровно
775
в каталоге
/var/www/html
, вы должны использовать:
find /var/www/html -perm 644
Вы можете поставить префикс числового режима с минусом
-
или косой чертой
/
.
Если в качестве префикса используется косая черта
/
, то по крайней мере одна категория (пользователь, группа или другие) должна иметь как минимум соответствующие биты, установленные для сопоставления файла.
Рассмотрим следующий пример команды:
find. -perm /444
Приведенная выше команда сопоставит все файлы с правами на чтение, установленными для пользователя, группы или других пользователей.
Если в качестве префикса используется минус
-
то для совпадения файла должны быть установлены хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:
Найти файлы по владельцу
Чтобы найти файлы, принадлежащие определенному пользователю или группе, используйте параметры
-user
и
-group
.
Например, чтобы найти все файлы и каталоги, принадлежащие пользователю
linuxize
, вы должны выполнить:
find / -user linuxize
Вот пример из реальной жизни. Допустим, вы хотите найти все файлы, принадлежащие пользователю
www-data
и изменить владельца соответствующих файлов с
www-data
на
nginx
:
find / -user www-data -type f -exec chown nginx {} ;
Найти и удалить файлы
Чтобы удалить все соответствующие файлы, добавьте параметр
-delete
в конец выражения соответствия.
Убедитесь, что вы используете эту опцию, только если вы уверены, что результат соответствует файлам, которые вы хотите удалить. Перед использованием параметра
-delete
всегда рекомендуется распечатывать соответствующие файлы.
Например, чтобы удалить все файлы, заканчивающиеся на
.temp
из
/var/log/
вы должны использовать:
find /var/log/ -name `*.temp` -delete
Используйте параметр
-delete
с особой осторожностью. Командная строка find оценивается как выражение, и если вы сначала добавите опцию
-delete
, команда удалит все, что находится ниже указанных вами начальных точек.
Когда дело доходит до каталогов,
find
может удалять только пустые каталоги, такие же как
rmdir
.
Вывод
Мы показали вам, как использовать команду
find
с различными параметрами и критериями.
Эта статья должна дать вам общее представление о том, как найти файлы в ваших системах Linux. Вы также можете посетить справочную страницу поиска и прочитать обо всех других мощных опциях команды
find
.
Как извлечь файл CAB с помощью средств командной строки в Windows 10/8/7
Вы можете распаковать один или более сжатые файлы .CAB-шкафа, используя встроенные средства командной строки Windows, такие как expand.exe, makecab & extrac32.
Как получить список всех драйверов устройств с помощью командной строки
Вы можете использовать команду driverquery в окне командной строки и генерировать список всех драйверов устройств, установленных на компьютере под управлением Windows 10.
Как удалить файлы и каталоги с помощью командной строки Linux
В этом руководстве мы покажем вам, как использовать команду rm для удаления файлов и каталогов, на примерах и объяснениях наиболее распространенных параметров rm.