Поиск по сайту:

Найдите и удалите файлы, в именах которых содержится определенный текст в Linux

В этом руководстве объясняется, как найти и удалить файлы, содержащие определенный текст или строку в именах, с помощью команды find в Linux. Кроме того, мы также научимся находить и удалять файлы, которые "не" содержат в своих именах определенный текст.

Введение

У меня есть много PDF-файлов, в которых есть важные советы и рекомендации по Linux. Я дал этим файлам уникальное имя для облегчения идентификации.

Скажем, например, я сохранил файлы, содержащие сведения о конфигурации сервера LDAP, как ldapconfig.pdf, файл конфигурации FTP как ftpconfig.pdf, сведения о конфигурации DHCP-сервера как dhcp_config. .pdf и т. д.

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

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

В поисках простого решения я понял, что в этом случае мне может помочь команда «найти». Просмотрев справочные страницы команды find, я нашел подходящее решение. Читай дальше.

1. Найдите и удалите файлы, в именах которых содержится определенный текст в Linux

Посмотрите на следующий пример. У меня есть следующие файлы в каталоге "Linux_guides".

cd Linux_guides/
$ ls
apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf
apache_install.pdf ftp_config.pdf mysql_install.pdf

Я завершил часть установки, поэтому мне не нужны файлы, в именах которых содержатся слова "install".

Вместо того, чтобы искать и удалять файлы, содержащие фразу «установить», один за другим, мы можем удалить их все сразу, используя следующую команду:

find -type f -name '*install*' -delete

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

Найдите и удалите файлы, в именах которых содержится определенный текст в Linux

Если опция удалить недоступна, вы можете использовать любую из следующих команд:

find -type f -name '*install*' -exec rm {} \;

Или,

find -type f -name '*install*' -exec rm {} +

Вы можете спросить, мы можем сделать то же самое, используя команду "rm", как показано ниже:

rm *install*

Да, подойдет. Однако команда rm install удалит все файлы, содержащие слово «install» в имени файла, из текущего каталога и выдаст сообщение, если какое-либо имя каталога содержит «install».

Но команда "find -type f" будет рекурсивно искать только файлы в текущем каталоге и во всех подкаталогах.

1.1. Найдите файлы, в именах которых содержится определенный текст в Linux

Если вы хотите только найти файлы (а не удалить), просто удалите параметры -delete или -exec rm {} \; или -exec rm {} + в приведенных выше командах.

Например, следующая команда найдет только те файлы, в именах которых содержится строка "install":

$ find -type f -name '*install*'

Пример вывода:

./mysql_install.pdf
./apache_install.pdf
./php_install.pdf

2. Найдите и удалите файлы, которые «не» содержат определенный текст в именах в Linux.

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

Для этого просто добавьте параметр '-not' в команду поиска, как показано ниже.

find -type f -not -name '*install*' -delete

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

Если опция удалить недоступна, вы можете использовать любую из следующих команд:

find -type f -not -name '*install*' -exec rm {} \;

Или,

find -type f -not -name '*install*' -exec rm {} +

Найдите и удалите файлы, которые не содержат определенного текста в именах в Linux

Более подробную информацию о команде find можно найти на страницах руководства.

man find

Заключение

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

Статьи по данной тематике