- Как найти недавно модифицированные файлы в Linux
- Как найти и отсортировать файлы по дате и времени модификации в Linux
- Утилиты Linux для сортировки файлов в Linux
- Некоторые способы сортировки файлов по дате и времени
- Заключение
- Поиск в Linux с помощью команды find
- Общий синтаксис
- Описание опций
- Примеры использования find
- Поиск файла по имени
- Поиск по дате
- По типу
- Поиск по правам доступа
- Поиск файла по содержимому
- С сортировкой по дате модификации
- Лимит на количество выводимых результатов
- Поиск с действием (exec)
- Чистка по расписанию
Как найти недавно модифицированные файлы в Linux
Зачастую требуется найти файлы, которые были модифицированы/созданы недавно, или за какой-либо промежуток времени. Например, администратор изменял настройки системы, но забыл, где он их сохранил. Или вы хотите проверить изменялись ли, и как, ваши файлы. Если вам необходимо найти недавно измененные файлы в linux, это можно сделать с помощью команды find.
Чтобы найти недавно модифицированные файлы, отсортированные в обратном порядке (то есть файл, измененный последним, будет показан первым), используется команда вида:
Вышеприведенная команда сортирует файлы в /etc (и поддиректориях) в обратном порядке по времени их изменения, и выводит отсортированный список вместе с их расположением в файловой системе и временем последнего изменения. Если вы также хотите проверить директории, опустите опцию «-type f».
Поиск файлов, которые были модифицированы в последние 60 минут в директории /target_directory и во всех ее поддиректориях:
Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и во всех ее поддиректориях:
Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и ее поддиректориях глубиной до 3 уровня:
Вы также можете задать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 7 дней, но не позднее чем 3 дня назад:
Все эти команды выводят только путь к найденным файлам. Вы можете также детализировать вывод информации с помощью опции «-exec».
Поиск файлов в директории /target_directory (и во всех ее поддиректориях), которые были модифицированы в последние 60 минут и вывод атрибутов файлов:
В качестве альтернативы вы можете использовать для этого команду xargs:
Обратите внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.
Источник
Как найти и отсортировать файлы по дате и времени модификации в Linux
Обычно у нас есть привычка сохранять много информации в виде файлов в нашей системе. Некоторые, скрытые файлы, некоторые хранятся в отдельной папке, созданной для простоты понимания, а некоторые как есть. Но все это заполняет наши каталоги; обычно настольный, что делает его похожим на беспорядок. Но проблема возникает, когда нам нужно найти конкретный файл, измененный в определенную дату и время в этой огромной коллекции.
Люди, знакомые с графическим интерфейсом пользователя, могут найти его с помощью диспетчера файлов, который перечисляет файлы в формате длинного списка, что позволяет легко понять, что мы хотели, но те пользователи, у которых есть привычка к черным экранам, или даже любой, кто работает на серверах, которые лишены графического интерфейса, будут нужна простая команда или набор команд, которые могли бы облегчить их поиск.
Настоящая красота Linux проявляется здесь, поскольку в Linux есть набор команд, которые при использовании по отдельности или вместе могут помочь в поиске файла или сортировке коллекции файлов по их имени, дате модификации, времени создания или даже любому другому. фильтр, который вы могли бы подумать о применении, чтобы получить свой результат.
Здесь мы раскроем реальную силу Linux, изучив набор команд, которые могут помочь отсортировать файл или даже список файлов по дате и времени.
Утилиты Linux для сортировки файлов в Linux
Вот некоторые базовые утилиты командной строки Linux, которых достаточно для сортировки каталога по дате и времени:
ls — перечисление содержимого каталога, эта утилита может отображать файлы и каталоги и даже может отображать всю информацию о их статусе, включая дату и время изменения или доступа, разрешения, размер, владельца, группу и т. д.
Мы уже рассмотрели множество статей о команде Linux ls и команде sort, вы можете найти их ниже:
- Изучите команду ls на 15 основных примерах
- Изучите 7 команд Advanced ls с примерами
- 15 полезных вопросов для собеседования по команде ls в Linux
sort — эту команду можно использовать для сортировки результатов любого поиска по любому полю или любому конкретному столбцу поля.
Мы уже рассмотрели две статьи о команде сортировки Linux, вы можете найти их ниже:
- 14 примеров команд «sort» в Linux — часть 1
- 7 полезных примеров команд Linux «sort» — часть 2
Эти команды сами по себе являются очень мощными командами, которые нужно освоить, если вы работаете на черных экранах и имеете дело с большим количеством файлов, просто чтобы получить тот, который вам нужен.
Некоторые способы сортировки файлов по дате и времени
Ниже приведен список команд для сортировки по дате и времени.
Приведенная ниже команда перечисляет файлы в формате длинного списка и сортирует файлы по времени модификации, начиная с самых новых. Для сортировки в обратном порядке используйте переключатель -r с этой командой.
Список файлов в каталоге на основе времени последнего доступа, т.е. на основе времени последнего доступа к файлу, а не изменения.
Список файлов в каталоге на основе времени последнего изменения информации о статусе файла или ctime . Эта команда сначала перечислит тот файл, любая информация о статусе которого, такая как: владелец, группа, разрешения, размер и т. Д., Была недавно изменена.
Если переключатель -a используется с вышеуказанными командами, они могут перечислять и сортировать даже скрытые файлы в текущем каталоге, а переключатель -r выводит вывод в обратном порядке.
Однако для более глубокой сортировки, такой как сортировка в выводе команды find, также можно использовать ls , но там sort оказывается более полезным, поскольку вывод может содержать не только файл имя, но любые поля по желанию пользователя.
Команды ниже показывают использование sort с командой find для сортировки списка файлов по дате и времени.
Чтобы узнать больше о команде find, перейдите по этой ссылке: 35 практических примеров команды find в Linux
Здесь мы используем команду find , чтобы найти все файлы в корневом каталоге (‘/’) , а затем распечатать результат как: месяц, в котором был осуществлен доступ к файлу, а затем имя файла. Из этого полного результата мы перечисляем 11 лучших записей.
Приведенная ниже команда сортирует вывод с использованием ключа в качестве первого поля, указанного в -k1 , а затем сортирует по месяцу, указанному перед ним M .
Здесь мы снова используем команду find , чтобы найти все файлы в корневом каталоге, но теперь мы распечатаем результат в виде: последней даты доступа к файлу, последнего доступа к файлу и затем имени файла. Из этого мы выберем 11 лучших записей.
Приведенная ниже команда сортировки сначала выполняет сортировку на основе последней цифры года, затем сортировку на основе последней цифры месяца в обратном порядке и, наконец, сортировку на основе первого поля. Здесь «1.8» означает 8-й столбец первого поля, а «n» перед ним означает числовую сортировку, а «r» указывает сортировку в обратном порядке.
Здесь мы снова используем команду find , чтобы вывести список из 11 файлов в корневом каталоге и распечатать результат в формате: время последнего обращения к файлу и затем имя файла.
Приведенная ниже команда сортирует вывод на основе первого столбца первого поля вывода, который является первой цифрой часа.
Эта команда сортирует вывод команды ls -l на основе 6-го поля по месяцам, а затем на основе 7-го поля, которое является датой, численно.
Заключение
Точно так же, обладая некоторыми знаниями о команде сортировки, вы можете отсортировать практически любой список на основе любого поля и даже любого столбца, который вам нужен. Это были некоторые приемы, которые помогут вам сортировать файлы по дате или времени. На их основе вы можете создавать свои собственные трюки. Однако, если у вас есть другой интересный трюк, вы всегда можете упомянуть об этом в своих комментариях.
Источник
Поиск в Linux с помощью команды find
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Общий синтаксис
— путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
— набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-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 |
Показать найденное. | |
-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 системах он может располагаться в разных местах.
Источник