Linux find dev null

Как пользоваться командой Find в Linux

img

Команда find — невероятно мощный инструмент, и умение управлять им может быть полезным и облегчить работу в системе Linux. Она поможет эффективно выполнять различные задачи системного администрирования, такие как управление дисковым пространством, рекурсивные операции с файлами и резервное копирование.

Как пользоваться командой Find Linux

Команда Find Linux выполняет поиск файлов и папок по заданным критериям и позволяет выполнять действия с результатами поиска. Синтаксис поиска таков:

$ find directory-to-search criteria action
  • directory-to-search — это начальная точка, с которой утилита начинает поиск файлов. Поиск включает все подкаталоги в этом каталоге
  • criteria (test) — указывает, какие файлы искать
  • action — указывает, что делать с каждым найденным файлом, соответствующим критериям

Критерии

Поиск по имени

Вот простой пример. Следующая команда выполняет поиск файла a.txt в текущем каталоге:

По умолчанию, ключевое слово -name чувствительно к регистру и игнорирует файл A.txt . Чтобы убедиться, что поиск не учитывает регистр, используйте -iname :

$ find . -iname "a.txt" ./a.txt ./A.txt

Для поиска всех файлов изображений .jpg в текущем каталоге используйте шаблон подстановочных знаков * .jpg :

$ find . -name "*.jpg" ./genxfacebook2.jpg ./genxfacebook1.jpg ./Moodle2.jpg ./moodle.jpg ./moodle/moodle1.jpg ./genxfacebook.jpg

Можно использовать имя каталога для поиска. Например, для поиска всех изображений .jpg в каталоге /home :

$ find /home -name "*.jpg" find: `/home/ubuntu/.ssh': Permission denied /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg find: `/home/me/testfiles': Permission denied find: `/home/me/data': Permission denied /home/me/water.jpg find: `/home/me/.cache': Permission denied

При наличии слишком большого количества сообщений об отказе в доступе в конце команды можно добавить 2 >/dev/null . Это перенаправляет сообщения об ошибках на устройство /dev/null и выдает чистые выходные данные:

find /home -name "*.jpg" 2>/dev/null /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg /home/me/water.jpg

Поиск по типу файла

С помощью ключевого слова -type можно искать файлы по типу. Типы файлов могут быть:

f plain files d directories l symbolic links b block devices c character devices p named pipes s sockets

Например, при использовании параметра -type d будут перечислены только каталоги:

$ find . -type d . ./.ssh ./.cache ./moodle

Поиск по размеру файла

Возможно, потребуется выполнить поиск больших файлов и удалить их. В следующем примере за после ключевого слова -size следует строка 1G . Это приведет к поиску всех файлов размером более 1 ГБ.

$ find . -size +1G ./Microsoft_Office_16.29.19090802_Installer.pkg ./android-studio-ide-183.5692245-mac.dmg

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

Читайте также:  Linux string to char

За номером следует единица измерения размера файла. Единицами измерения могут быть:

  • b — Блоки по 512 байтов
  • c — Байты
  • k — Килобайты
  • M — Мегабайты
  • G — Гигабайты

Поиск пустых каталогов и файлов

Используйте параметр -empty для поиска пустых каталогов и файлов:

$ find . -empty ./.cloud-locale-test.skip ./datafiles ./b.txt . ./.cache/motd.legal-displayed

Поиск по времени изменения файла

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

$ find . -cmin -60 . ./a.txt ./datafiles

Для файлов, измененных в любое время до последних 60 минут, используйте 60 .

Поиск по времени доступа

Поиск файлов можно выполнить по времени последнего доступа с помощью ключевого слова -atime . Например, следующая команда выполняет поиск файлов, доступ к которым не осуществлялся за последние 180 дней:

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

Поиск по имени пользователя

С помощью параметра -user username можно искать все файлы и каталоги, принадлежащие конкретному пользователю. Например, следующая команда выполняет поиск всех файлов и каталогов, принадлежащих пользователю ubuntu в каталоге /home :

$ find /home -user ubuntu 2>/dev/null /home/ubuntu /home/ubuntu/.bash_logout /home/ubuntu/.bashrc /home/ubuntu/.ssh /home/ubuntu/.profile

Поиск по режиму доступа

Хотите найти файлы с определенным режимом доступа, то есть имеющие определенный набор разрешений? Используйте ключевого слова -perm . В следующем примере выполняется поиск файлов с разрешениями 777 :

Операторы

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

Например, следующая команда выполняет поиск файлов, превышающих 100MB, которыми владеет указанный пользователь:

$ find /home -user me -and -size +100M 2>/dev/null /home/me/kali-linux-2020.3-installer-netinst-i386.iso

Следующая команда ищет файлы, размер которых превышает 100MB, принадлежащие пользователю me или пользователю vagrant :

$ find /home ( -user vagrant -or -user me ) -and -size +100M 2>/dev/null /home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz /home/me/kali-linux-2020.3-installer-netinst-i386.iso

Необходимо поместить символ обратной косой черты перед скобками, чтобы предотвратить попытку их интерпретации оболочкой.

Читайте также:  Устройства файловой системы linux

Действия

Утилита find предоставляет результаты поиска, а затем выбор для выполнения действия над ними. Ниже приведены некоторые предопределенные действия.

  • -delete — Удаление файлов, соответствующих критериям поиска
  • -ls — Отображение подробных выходных данных ls с размерами файлов и количеством входов
  • -print — Показывает полный путь к соответствующим файлам. Это действие по умолчанию, если не указано другое действие
  • -exec — Выполняет следующую команду в каждой строке результатов поиска

Итак, если вы хотите найти все пустые файлы и удалить их, вы можете сделать это следующим образом:

Внимание! Перед использованием действия удаления всегда безопасно выполнить команду один раз с действием -print и подтвердить результаты.

Действие -exec является особым. Он позволяет выполнить выбранную команду в результатах поиска. Это так:

  • command – команда, которую требуется выполнить в результатах поиска, например, rm , mv или cp .
  • <> – представляет результаты поиска.
  • Команда заканчивается точкой с запятой с обратной косой чертой.

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

Вот еще один пример использования действия -exec . Следующая команда копирует все PNG-файлы образов в каталог backup/images :

$ find . -name "*.png" -exec cp <> /backups/images ;

Заключение

Команда find используется для поиска файлов по имени, дате последнего доступа, дате последнего изменения, имени пользователя (владельца), имени группы, размеру, разрешениям и другим различным критериям. Эти результаты поиска позволяют выполнять с ними такие действия, как удаление, копирование или перемещение в другое расположение.

После того, как вы освоите команду find, она может помочь вам и упростить задачи системного администрирования. И ключ к его освоению — это его практика и использование!

Источник

Как использовать команду find в Linux?

Как использовать команду find в Linux?

Команда find — невероятно мощный инструмент, и его изучение может здорово вас выручить. Данные знания помогут вам эффективно выполнять различные задачи системного администрирования, такие как управление дисковым пространством, рекурсивные файловые операции и резервное копирование.

Команда поиска в Linux ( find ) выполняет поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска. Синтаксис команды find такой:

$ find directory-to-search criteria action
  • directory-to-search (каталог для поиска) — это отправная точка, с которой find начинает поиск файлов. Поиск включает все подкаталоги этого каталога.
  • criteria (критерий или тест ) — сообщает, какие файлы искать
  • action (действие) сообщает, что делать с каждым найденным файлом, соответствующим критериям.
Читайте также:  Connection timed out ssh linux

Примеры использования команды find

Теперь давайте посмотрим на несколько примеров использования команды find в Linux, которые помогут вам в быстром изучении данной утилиты.

Поиск по названию (-name)

Вот простой пример. Следующая команда ищет файл a.txt в текущем каталоге:

  • . (точка) — означает что файл относится к текущему каталогу
  • name — указывает критерии, которые должны быть сопоставлены. В данном случае название файла

В данном примере критерий -name учитывает регистр и игнорирует файл A.txt . Чтобы гарантировать, что ваш поиск нечувствителен к регистру, используйте -iname :

$ find . -iname "a.txt" ./a.txt ./A.txt

Чтобы найти все .jpg файлы изображений в текущем каталоге, используйте шаблон подстановки *.jpg :

$ find . -name "*.jpg" ./genxfacebook2.jpg ./genxfacebook1.jpg ./Moodle2.jpg ./moodle.jpg ./moodle/moodle1.jpg ./genxfacebook.jpg

Вы можете использовать имя каталога для поиска. Например, чтобы найти все изображения в формате .jpg в каталоге /home:

$ find /home -name "*.jpg" find: `/home/ubuntu/.ssh': Permission denied /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg find: `/home/me/testfiles': Permission denied find: `/home/me/data': Permission denied /home/me/water.jpg find: `/home/me/.cache': Permission denied

Если вы видите слишком много ошибок, связанных с отказом в разрешениях (Permission denied), вы можете добавить опцию 2> /dev/null в конце команды. Она перенаправляет сообщения об ошибках на устройство /dev/null и дает более чистый вывод:

find /home -name "*.jpg" 2>/dev/null /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg /home/me/water.jpg

Поиск по типу файла

С помощью критерия -type вы можете искать файлы по типу. Типы файлов могут быть:

  • f — простой файл
  • d — директория
  • l — символические ссылки
  • b — блочные устройства (dev)
  • c — символьные устройства (dev)
  • p — именованные каналы
  • s — сокеты

Например, при использовании -type d будут перечислены только каталоги:

$ find . -type d . ./.ssh ./.cache ./moodle

Поиск по размеру файла

Возможно, вам потребуется найти большие файлы и удалить их. В следующем примере за критерием размера файла следует строка +1G . Это приведет к поиску всех файлов размером более 1 ГБ.

$ find . -size +1G ./Microsoft_Office_16.29.19090802_Installer.pkg ./android-studio-ide-183.5692245-mac.dmg

Знак + означает поиск файлов, размер которых превышает указанное ниже число. Знак минус (-) может использоваться для обозначения меньшего чем. Отсутствие знака означает точное совпадение размера.

Символ Единица измерения
с Байт
k Килобайт
M Мегабайт
G Гигабайт

Поиск пустых каталогов и файлов

Используйте критерий -empty чтобы найти пустые каталоги и файлы:

Источник

Оцените статью
Adblock
detector