Linux найти все файлы которые были изменены

Содержание
  1. Как найти недавно модифицированные файлы в Linux
  2. Практические примеры использования команды find в Linux
  3. Часть 1: Простые команды find для поиска файлов по именам
  4. Поиск файлов по имени в текущей директории
  5. Поиск файлов в домашней директории
  6. Поиск файлов по имени без учёта регистра
  7. Найти директории по имени
  8. Поиск PHP файлов по имени
  9. Найти все PHP файлы в директории
  10. Часть 2: Поиск файлов на основе их прав доступа (разрешений)
  11. Найти все файлы с правами доступа 777
  12. Найти все файлы без прав доступа 777
  13. Поиск SGID файлов с доступом 644
  14. Поиск SUID файлов
  15. Найти SGID файлы
  16. Найти только файлы с разрешением на чтение
  17. Найти только файлы с разрешением на запись
  18. Поиск файлов на которые есть права на запись у кого угодно
  19. Следовать символическим ссылкам и не выводить сообщения об ошибках
  20. Найти исполнимые файлы
  21. Найти все файлы с доступом 777 и изменить их разрешения (chmod) на 644
  22. Найти директории с разрешением 777 и изменить их разрешения (chmod) на 755
  23. Поиск и удаление единичного файла
  24. Поиск и удаление нескольких файлов
  25. Поиск всех пустых файлов
  26. Поиск всех пустых директорий
  27. Найти все скрытые файлы
  28. Часть 3: Поиск файлов на основе их владельцев и групп
  29. Найти файл на основе имени пользователя
  30. Найти все файлы принадлежащие пользователю
  31. Найти все файлы принадлежащие группе
  32. Найти определённые файлы, принадлежащие пользователю
  33. Часть 4: Поиск файлов и директорий по времени и дате
  34. Найти файлы, которые были изменены определённое время назад
  35. Найти файлы, к которым был получен доступ определённое время назад
  36. Найти файлы, изменённые в заданном диапазоне дней
  37. Поиск файлов, чьи свойства недавно менялись
  38. Поиск недавно модифицированных файлов
  39. Поиск файлов к которым недавно выполнялся доступ
  40. Часть 5: Поиск файлов и директорий на основе размера
  41. Поиск файлов определённого размера
  42. Поиск файлов размера в определённом диапазоне
  43. Поиск и удаление файлов определённого размера
  44. Поиск файлов с определённым расширением и определённым размером и их удаление
  45. Часть 6: Поиск нескольких имён файлов (расширений)
  46. linux-notes.org
  47. Добавить комментарий Отменить ответ
  48. Поиск в Linux с помощью команды find
  49. Общий синтаксис
  50. Описание опций
  51. Примеры использования find
  52. Поиск файла по имени
  53. Поиск по дате
  54. По типу
  55. Поиск по правам доступа
  56. Поиск файла по содержимому
  57. С сортировкой по дате модификации
  58. Лимит на количество выводимых результатов
  59. Поиск с действием (exec)
  60. Чистка по расписанию

Как найти недавно модифицированные файлы в Linux

Зачастую требуется найти файлы, которые были модифицированы/созданы недавно, или за какой-либо промежуток времени. Например, администратор изменял настройки системы, но забыл, где он их сохранил. Или вы хотите проверить изменялись ли, и как, ваши файлы. Если вам необходимо найти недавно измененные файлы в linux, это можно сделать с помощью команды find.

Чтобы найти недавно модифицированные файлы, отсортированные в обратном порядке (то есть файл, измененный последним, будет показан первым), используется команда вида:

Вышеприведенная команда сортирует файлы в /etc (и поддиректориях) в обратном порядке по времени их изменения, и выводит отсортированный список вместе с их расположением в файловой системе и временем последнего изменения. Если вы также хотите проверить директории, опустите опцию «-type f».

Поиск файлов, которые были модифицированы в последние 60 минут в директории /target_directory и во всех ее поддиректориях:

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и во всех ее поддиректориях:

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и ее поддиректориях глубиной до 3 уровня:

Вы также можете задать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 7 дней, но не позднее чем 3 дня назад:

Все эти команды выводят только путь к найденным файлам. Вы можете также детализировать вывод информации с помощью опции «-exec».
Поиск файлов в директории /target_directory (и во всех ее поддиректориях), которые были модифицированы в последние 60 минут и вывод атрибутов файлов:

В качестве альтернативы вы можете использовать для этого команду xargs:

Обратите внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.

Источник

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

Команда find в Linux являет одной из самых важной и часто используемых утилит командной строки в Unix подобных операционных системах. Команда find используется для поиска и определения расположения файлов и директорий на основе заданных условий. Эти условия задаются в качестве аргументов при запуске find и охватывают все возможные характеристики файла: имя, права доступа, владелец, группа, размер, время доступа/изменения/создания, тип файла, расширение и прочее. Причём эти все эти характеристики можно комбинировать в любых сочетаниях, а вывод команды find может быть настроен очень гибко.

Для первоначального знакомства с командой find рекомендуется статья:

В качестве справочного материала по всем возможностям find рекомендуется:

Если вам просто нужно найти файл по имени, то обратите внимание на команду locate — вполне возможно, её окажется вполне достаточно под ваши нужды:

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

Команды в этой статье сгруппированы по нескольким разделам — от самых базовых до более продвинутых):

Часть 1: Простые команды find для поиска файлов по именам

Поиск файлов по имени в текущей директории

Найти все файлы, чьё имя zalinux.txt в текущей рабочей директории:

Поиск файлов в домашней директории

Найти все папки в директории /home с именем zalinux.txt:

Читайте также:  Linux what is pae

Поиск файлов по имени без учёта регистра

Найти в директории /home все файлы с именем zalinux.txt чьё имя написано как заглавными, так прописными буквами.

Найти директории по имени

Найти все директории, чьё имя Zalinux в директории / (корневой директории).

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

Найти в текущей рабочей директории все файлы php чьё имя zalinux.php.

Найти все PHP файлы в директории

Найти все php файлы в директории.

Часть 2: Поиск файлов на основе их прав доступа (разрешений)

Найти все файлы с правами доступа 777

Найти все файлы, чьи права доступа равны 777 (право на чтение, запись и выполнение пользователем, группой и кем угодно.

Найти все файлы без прав доступа 777

Найти все файлы, разрешение на доступ к которым не равен 777.

Поиск SGID файлов с доступом 644

Найти все файлы с битом SGID чьи права доступа установлены на 644.

Поиск файлов со Sticky Bit с правами доступа 551

Найти все файлы с включённым Sticky Bit права доступа к которым равны 551.

Поиск SUID файлов

Найти все файлы с установленным SUID.

Найти SGID файлы

Найти все файлы у которых установлен SGID:

Найти только файлы с разрешением на чтение

Найти все файлы, к которым есть права на чтение:

Найти только файлы с разрешением на запись

Найти все файлы, к которым есть права на запись:

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

Тем не менее если изменить пользователя, от чьего имени запускается команда, то результаты могут быть совсем другими. К примеру, подсчитаем количество файлов в директории /etc/ на которые есть право записи у владельца, но запустим команду от текущего пользователя и от суперпользователя (с sudo):

Результаты получились различными только из-за того, что у обычного пользователя не хватило прав «заглянуть» в некоторые подпапки и часть файлов не была проверена на соответствие условиям. При использовании sudo были проверены абсолютно все файлы и поэтому результатов получилось больше.

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

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

Также обратите внимание, как обозначено право на запись — используется плюс. Это означает, что могут присутствовать и другие права (например, на чтение и выполнение).

Следовать символическим ссылкам и не выводить сообщения об ошибках

При попытке доступа к файлам и папкам на которые недостаточно прав, выводятся сообщения о том, что доступ отклонён. Чтобы этого избежать, используйте после команды конструкцию 2>/dev/null

Если папка для поиска содержит символические ссылки, то по умолчанию команда find не следует им, что команда find переходила по символическим ссылкам, используйте опцию -L

Следующая команда найдёт в папке /tmp все файлы на которые у кого угодно есть права чтения, при встрече символических ссылок она будет переходить по ним, в случае возникновения проблем с доступом, сообщения об ошибках выводиться не будут:

Найти исполнимые файлы

Найти все исполнимые файлы.

Найти все файлы с доступом 777 и изменить их разрешения (chmod) на 644

Найти все файлы с разрешениями равным 777 и использовать команду chmod для установки разрешений на 644:

Найти директории с разрешением 777 и изменить их разрешения (chmod) на 755

Найти все файлы с разрешениями равным 777 и использовать команду chmod для установки разрешений на 755:

Поиск и удаление единичного файла

Найти единичный файл с именем hackware.txt и удалить его:

Поиск и удаление нескольких файлов

Для поиска нескольких типов файлов, таких как .mp3 или .txt и последующего их удаление используйте:

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

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

Поиск всех пустых директорий

Найти все пустые директории по указанному пути:

Найти все скрытые файлы

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

Часть 3: Поиск файлов на основе их владельцев и групп

Найти файл на основе имени пользователя

Найти все или один файл с именем hackware.txt в / (корневой) директории принадлежащие пользователю root:

Найти все файлы принадлежащие пользователю

Найти все файлы принадлежащие пользователю mial в директории /home:

Найти все файлы принадлежащие группе

Для поиска всех файлов, принадлежащих группе Developer в директории /home:

Найти определённые файлы, принадлежащие пользователю

Чтобы найти все файлы .txt пользователя mial в директории /home:

Часть 4: Поиск файлов и директорий по времени и дате

Найти файлы, которые были изменены определённое время назад

Чтобы найти все файлы, которые были изменены ровно 50 дней назад:

Найти файлы, к которым был получен доступ определённое время назад

Чтобы найти все файлы, к которым был получен доступ ровно 50 дней назад:

Найти файлы, изменённые в заданном диапазоне дней

Чтобы найти все файлы, которые были модифицированы более 50 дней назад и менее 100 дней назад:

Поиск файлов, чьи свойства недавно менялись

Чтобы найти файлы, свойства которых (права доступа, владелец, группа) были изменены за последний час:

Читайте также:  Как отключить настройки совместимости windows 10

Поиск недавно модифицированных файлов

Чтобы найти файлы, которые были модифицированы за последний час:

Поиск файлов к которым недавно выполнялся доступ

Чтобы найти все файлы, доступ к которым был сделан за последний час:

Часть 5: Поиск файлов и директорий на основе размера

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

Чтобы найти все файлы размером ровно 50MB используйте:

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

Чтобы найти все файлы, чем размер более 50MB и менее 100MB:

Поиск и удаление файлов определённого размера

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

Поиск файлов с определённым расширением и определённым размером и их удаление

Чтобы найти все .mp3 файла размером более чем 10MB и удалить их в одну команду, используйте:

Часть 6: Поиск нескольких имён файлов (расширений)

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

Предположим что нужно найти все файлы в текущей директории с файловыми расширениями .sh и .txt, это можно сделать следующей командой:

Объяснение предыдущей команды:

  • . (точка) означает текущую директорию
  • -type используется для указания типа файла, мы ищем обычные файлы, которые здесь обозначаются буквой f
  • -name используется для указания шаблона поиска. В данном случае указаны расширения файлов
  • -o означает «ИЛИ»
  • скобки () используются для установки приоритета логических операций

В результате получается следующее:

  • нужно найти файлы И (имя у них «*.sh» ИЛИ имя «*.txt»)

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

  • (нужно найти файлы И имя у них «*.sh») ИЛИ имя «*.txt»

Файловые расширения, поскольку они содержат символы с особым значением для оболочки, нужно поместить в кавычки. По этой же причине нужно экранировать скобки с помощью обратного слэша (\).

Для поиска по трём файловым расширениям .sh, .txt and .c используется следующая команда:

И ещё один пример по поиску всех изображений — ищутся файлы по расширениям .png, .jpg, .deb и .pdf:

Как можно понять из приведённых выше команд, добавляя опцию -o («ИЛИ») можно указать любое количество условий. Помните, что логическая операция «ИЛИ» имеет меньший приоритет перед операцией «И». Для операции «И» не требуется специальная опция (хотя она есть), поскольку она подразумевается по умолчанию.

Источник

linux-notes.org

Иногда, нужно найти все измененные файлы или папки в Unix/Linux ОС и в моей статье «Поиск последних измененных файлов/папок в Unix/Linux» я расскажу как это сделать.

Чтобы найти все файлы, которые были изменены с момента определенного времени (т.е. час назад, день назад, 24 часа назад и так далее) в Unix и Linux имеется команда find и она очень пригодиться для таких целей.
Чтобы найти все файлы, которые были изменены в течение последних 24 часов (последний полный день) в текущем каталоге и в его подкаталогах, используйте:

Опция «-mtime -1» сообщает команде find искать модифицированные файлы за последние сутки (24 часа).
Опция «-print» сообщает «find» выводить файлы и их пути (где они лежат) и данную команду можно заменить на «-ls» если нужно вывести подробную информацию о файле.

Примеры:

Например нужно найти файлы, что были изменены за последние 30 минут в папке /home/captain:

И приведу пример подобного, но для папки:

Например нужно найти измененные файлы за 5 дней, но не включать в поиск вчерашний день (за последний день):

Для полного счастья, можно вывести время модификации и отсортировать по нему:

Чтобы ограничить уровень вложенности, добавьте параметр «-depth». Например, поиск с уровнем вложенности не более 3 папок:

Поиск файлов в /home/captain директории (и во всех ее подпапках) которые были изменены в течение последних 60 минут, и вывести их атрибуты:

В качестве альтернативы, вы можете использовать xargs команду, чтобы достичь того же:

Поиск последних измененных файлов/папок в Unix/Linux завершен.

Добавить комментарий Отменить ответ

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

Источник

Поиск в Linux с помощью команды find

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

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

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

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

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

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

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

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype Тип регулярного выражения.
-L или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <> \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

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

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

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

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

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

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

find / -name «file.txt»

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

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

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

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

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

find . -name «sess_*» -a -name «*cd»

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

find . -name «sess_*» -o -name «*cd»

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

find . -regex ‘.*/\(sess_.*cd\)’

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

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

find . ! -name «*.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.

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

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

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

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

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

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

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

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

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

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

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

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

find . -name «sess_*» -type f | xargs -I ‘<>‘ 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 /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’

* в данном примере мы использовали 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 системах он может располагаться в разных местах.

Источник

Читайте также:  Устройство по приему windows
Оцените статью