Find linux не показывать ошибки

Обновлено: 03.07.2024

Допустим, вы хотите найти запись пользователя louise в системном файле паролей:

$ grep louise /etc/passwd

He исключена возможность, что вы забудете, как называется этот файл. В таком случае воспользуйтесь следующей командой:

$ grep louise /etc/password

grep: /etc/password: No such file or directory

$ grep louise /etc/*

$ grep -a louise /etc/*

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

$ grep louise /etc/* 2> /dev/null

Эта команда направляет поток ошибок (2>) в системную корзину (устройство /dev/null). На жаргоне системных администраторов это устройство называется битодробилкой.

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Отчет об ошибках

Отчет об ошибках На вкладке Дополнительно в окне Свойства системы нажимаем кнопку Отчет об ошибках. Откроется одноименное окно Отчет об ошибках (рис. 4.5), в котором устанавливаем переключатель в положение Отключить отчет об ошибках и оставляем установленным флажок Но

Шаг 20 - Временные объекты. Неявные вызовы конструкторов и их подавление.

Шаг 20 - Временные объекты. Неявные вызовы конструкторов и их подавление. Не удается углубиться в какую-либо тему. Приходится касаться по верхам, потом переключаться на что-то другое. С другой стороны, может это и правильно, часто достаточно только знать, что есть ТАКОЕ

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий . Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Подавление линий заднего плана

Подавление линий заднего плана Команда HIDE обеспечивает создание рисунка без скрытых линий. Сложные трехмерные модели часто оказываются перегруженными, что затрудняет их чтение и просмотр результатов выполнения какой-либо команды на объекте. Можно устранить эту

Отчеты об ошибках

Отчеты об ошибках В операционной системе Windows Vista реализован новый механизм отчетов об ошибках. Теперь ограничить и настроить его работу можно с помощью следующих параметров, расположенных в ветви реестра HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsWindows Error Reporting. Если не сказано иное,


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

Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

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

Синтаксис команды find:

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

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

Следующая команда ищет файл s.txt в текущем каталоге:

  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

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

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

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

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

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

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

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

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • "+" — Поиск файлов больше заданного размера
  • "-" — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).

Единицы измерения файлов:

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

Критерий -empty позволяет найти пустые файлы и каталоги.

Поиск времени изменения

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

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

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

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

Критерий -atime позволяет искать файлы по времени последнего доступа.

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

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

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

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

Операторы

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

Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

Перед скобками нужно поставить обратный слеш "\".

Действия

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

  • -delete — Удаляет соответствующие результатам поиска файлы
  • -ls — Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.

    -delete

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

    Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.

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

    • command – это команда, которую вы желаете выполнить для результатов поиска. Например:
      • rm
      • mv
      • cp

      С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

      Другой пример использования действия -exec:

      Таким образом можно скопировать все .jpg изображения в каталог backups/fotos

      Заключение

      Команду find можно использовать для поиска:

      • Файлов по имени.
      • Дате последнего доступа.
      • Дате последнего изменения.
      • Имени пользователя (владельца файла).
      • Имени группы.
      • Размеру.
      • Разрешению.
      • Другим критериям.

      С полученными результатами можно сразу выполнять различные действия, такие как:

      • Удаление.
      • Копирование.
      • Перемещение в другой каталог.

      Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.

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

      Базовый синтаксис команды выглядит следующим образом:

      В случае утилиты find параметры используются достаточно редко: они позволяют регламентировать обработку символьных ссылок, задать уровень оптимизации выражения и передать параметры отладки. Так, параметр -P позволяет запретить переход по символьным ссылкам, параметр -L — разрешить переход по символьным ссылкам, а параметр -H — запретить переход по символьным ссылкам за исключением случаев обработки выражений, например, когда в качестве имени файла для сравнения используется символьная ссылка. Параметр -O позволяет задать уровень оптимизации выражения из диапазона от 0 до 3 и в подавляющем большинстве случаев не используется, как и параметр -D, предназначенный для передачи параметров отладки утилите.

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

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

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

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

      Проверка Назначение
      -amin x Файл открыт x минут назад
      -anewer file Файл открыт после открытия файла file
      -atime x Файл открыт ранее, чем x дней назад
      -cmin x Файл модифицирован x минут назад
      -cnewer file Файл модифицирован после файла file
      -ctime x Файл модифицирован ранее, чем x дней назад
      -empty Файл пуст
      -executable Файл является исполняемым
      -false Возврат логического значения false
      -fstype fs Файл расположен на файловой системе fs
      -gid id Файлом владеет группа пользователей с идентификатором id
      -group group Файлом владеет группа пользователей с именем group
      -ilname name Символьная ссылка имеет имя name без учета регистра
      -iname name Файл имеет имя name без учета регистра
      -inum x Файл связан со структурой inode с номером x
      -ipath path В пути к файлу присутствует фрагмент path без учета регистра
      -iregex regex Путь к файлу соотвествует регулярному выражению regex без учета регистра
      -links x Файл имеет x символьных ссылок
      -lname name Символьная ссылка имеет имя name
      -mmin x Файл модифицирован x минут назад
      -mtime x Файл модифицирован x дней назад
      -name name Файл имеет имя name
      -newer file Файл модифицирован после файла file
      -nogroup Файлом не владеет ни одна из существующих групп пользователей
      -nouser Файлом не владеет ни один из существующих пользователей
      -path path В пути к файлу присутствует фрагмент path
      -perm perm Файл имеет права доступа perm
      -readable Файл доступен для чтения
      -regex regex Путь к файлу соотвествует регулярному выражению regex
      -samefile file Файл связан с той же структурой inode, что и файл file
      -size x Файл имеет размер x байт (для указания размера в других единицах используются модификаторы: b — 512-байтовые блоки, c — байты, w — двухбайтовые слова, k — килобайты, M — мегабайты, G — гигабайты)
      -true Возврат логического значения true
      -type type Файл относится к указанному типу type (b — блочное устройство, c — символьное устройство, d — директория, p — именованный канал FIFO, f — обычный файл, l — символьная ссылка, s — сокет)
      -uid id Файлом владеет пользователь с идентификатором id
      -user user Файлом владеет пользователь с именем user
      -writable Файл доступен для записи

      В случае числовых значений x могут использоваться дополнительные модификаторы:

      Помимо проверок утилита позволяет выполнять определенные действия по отношению к найденным файлам. Наиболее важные действия приведены в таблице.

      Действие Назначение
      -delete Удалять найденные файлы. В случае корректного удаления возвращает true, в противном — false.
      -exec command ; Выполнять команду command по отношению к каждому из найденных файлов. Возвращает true в случае получения нулевого статуса завершения команды, false — в противном случае. Последовательность <> заменяется на имя текущего файла, параметры команды задаются до символа ;.
      -exec command <> + Вариант действия exec, в котором осуществляется объединение имен найденных файлов в рамках одной команды. Таким образом снижается количество создаваемых процессов.
      -execdir command ; Аналог действия exec, исполняющий команду в поддиректории с найденным файлом.
      -execdir command <> + Вариант действия execdir, в котором осуществляется объединение имен найденных файлов в рамках одной команды. Таким образом снижается количество создаваемых процессов.
      -fprint file Записывает полное имя файла, завершающееся символом перехода на новую строку, в файл с именем file, всегда возвращая логическое значение true.
      -fprintf file format Аналог действия printf, записывающий вывод в файл с именем file. Файл создается всегда, даже если в него не записывается имен файлов.
      -ok command ; Вариант действия exec, в котором пользователю предлагается согласиться или отказаться от выполнения действия. В случае отказа возвращается логическое значение false.
      -okdir command ; Вариант действия execdir, в котором пользователю предлагается согласиться или отказаться от выполнения действия. В случае отказа возвращается логическое значение false.
      -print Выводит полное имя файла, завершающееся символом перехода на новую строку, всегда возвращая логическое значение true.
      -printf format Выводит строку в заданном формате, всегда возвращая логическое значение true. Строка форматирования формируется по аналогии со строками форматирования языка C, но имеется множество нюансов, которые позволяют выводить информацию о найденных файлах.
      -quit Немедленно завершает работу утилиты.

      Операторы в выражениях утилиты find используются по аналогии с операторами языков программирования. Наиболее важные операторы приведены в таблице.

      Оператор Назначение
      ( expr ) Исполнять выражение expr в первую очередь. Так как скобки являются специальными символами командной оболочки, следует использовать символы для экранирования.
      ! expr Возвращает логическое значение true, если результатом исполнения выражения expr является логическое значение false (логическое «не»). Символ восклицательного знака также должен экранироваться.
      -not expr Аналог оператора !, совместимый с POSIX.
      expr1 expr2 Два выражения объединяются с помощью неявного оператора -and (логическое «и»), то есть, expr2 не выполняется в том случае, если в результате исполнения expr1 получено логическое значение false.
      expr1 -a expr2 Аналог expr1 expr2.
      expr1 -and expr2 Аналог expr1 expr2, совместимый с POSIX.
      expr1 -o expr2 Возвращает логическое значение true, если результатом исполнения выражения expr1 или expr2 является значение true и false в противном случае (логическое «или»).
      expr1 -or expr2 Аналог expr1 -o expr2, совместимый с POSIX.
      expr1, expr2 При использовании запятой оба выражения будут исполняться всегда. В качестве результата будет использоваться результат исполнения выражения expr2.

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

      Вывод списка всех файлов в файловой системе

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

      Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

      Общий синтаксис

      find <где искать> <опции>

      <где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

      <опции> — набор правил, по которым выполнять поиск.

      * по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

      Описание опций

      Тип объекта поиска. Возможные варианты:

      • f — файл;
      • d — каталог;
      • l — ссылка;
      • p — pipe;
      • s — сокет.

      Также доступны логические операторы:

      Оператор Описание
      -a Логическое И. Объединяем несколько критериев поиска.
      -o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
      -not или ! Логическое НЕ. Инвертирует критерий поиска.

      Полный набор актуальных опций можно получить командой man find.

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

      Поиск файла по имени

      1. Простой поиск по имени:

      * в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

      2. Поиск файла по части имени:

      * данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

      3. Несколько условий.

      а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

      б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

      в) Более компактный вид имеют регулярные выражения, например:

      * где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

      4. Найти все файлы, кроме .log:

      * в данном примере мы воспользовались логическим оператором !.

      Поиск по дате

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

      find . -type f -mtime +60

      * данная команда найдет файлы, которые менялись более 60 дней назад.

      2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find --version).

      а) дате изменения:

      find . -type f -newermt "2019-11-02 00:00"

      * покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

      find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

      * найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

      б) дате обращения:

      find . -type f -newerat 2019-10-08

      * все файлы, к которым обращались с 08.10.2019.

      find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

      * все файлы, к которым обращались в октябре.

      в) дате создания:

      find . -type f -newerct 2019-09-07

      * все файлы, созданные с 07 сентября 2019 года.

      find . -type f -newerct 2019-09-07 ! -newerct "2019-09-09 07:50:00"

      * файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

      По типу

      Искать в текущей директории и всех ее подпапках только файлы:

      * f — искать только файлы.

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

      1. Ищем все справами на чтение и запись:

      find / -perm 0666

      2. Находим файлы, доступ к которым имеет только владелец:

      find / -perm 0600

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

      find / -type f -exec grep -i -H "content" <> \;

      * в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

      С сортировкой по дате модификации

      * команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

      Лимит на количество выводимых результатов

      Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

      Поиск с действием (exec)

      1. Найти только файлы, которые начинаются на sess_ и удалить их:

      find . -name "sess_*" -type f -print -exec rm <> \;

      * -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

      2. Переименовать найденные файлы:

      find . -name "sess_*" -type f -exec mv <> new_name \;

      3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

      find . -name "*.tmp" | wc -l

      4. Изменить права:

      find /home/user/* -type d -exec chmod 2700 <> \;

      * в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

      5. Передать найденные файлы конвееру (pipe):

      * в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

      6. Произвести замену в файлах с помощью команды sed:

      find /opt/project -type f -exec sed -i -e "s/test/production/g" <> \;

      * находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

      Чистка по расписанию

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

      Открываем на редактирование задания cron:

      0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

      * в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
      * полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

      Читайте также: