Android

Как найти файлы в Linux с помощью командной строки

Непосредственно Каха 6 серия 2 часть

Непосредственно Каха 6 серия 2 часть

Оглавление:

Anonim

Команда 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

Приведенная выше команда сопоставит все файлы с правами на чтение, установленными для пользователя, группы или других пользователей.

Если в качестве префикса используется минус - то для совпадения файла должны быть установлены хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:

find. -perm -664

Найти файлы по владельцу

Чтобы найти файлы, принадлежащие определенному пользователю или группе, используйте параметры -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 .

найти терминал