- Как найти недавно модифицированные файлы в Linux
- Найти последние отредактированные файлы в Linux
- Команда find в Linux – мощный инструмент сисадмина
- Поиск по имени
- Поиск по типу файла
- Поиск по размеру файла
- Единицы измерения файлов:
- Поиск пустых файлов и каталогов
- Поиск времени изменения
- Поиск по времени доступа
- Поиск по имени пользователя
- Поиск по набору разрешений
- Операторы
- Действия
- -delete
- Заключение
- Linux найти файлы измененные за сутки
- Поиск файлов с одновременным изменением прав доступа
- Найти файлы, заканчивающиеся определёнными символами/буквами
- Удаление временных файлов
- Поиск файлов, измененных в определённое время
- Поиск средствами which и whereis
- Поиск по содержимому файлов с помощью grep
Как найти недавно модифицированные файлы в 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, это возможно сделать с помощью команды find. Чтобы найти недавно модифицированные файлы, отсортированные в оборотном порядке (то есть файл, измененный последним, будет показан первым), используется бригада вида:
find /data/smb/Свалка -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r
Ответ станет примерно таким:
2012-09-14 22:25:14.0000000000 /etc/shadow
2012-08-17 00:56:36.0000000000 /etc/resolv.conf
2012-08-16 23:22:57.0000000000 /etc/ld.so.cache
2012-08-16 23:22:29.0000000000 /etc/mtab
2012-08-16 23:22:04.0000000000 /etc/network/run/ifstate
2012-07-10 01:19:24.0000000000 /etc/papersize
Вниманье! В Putty при копировании команды в буфер обмена и последующей вставке в консоль Linux, исчезают символы %. Требуется ручная корректировка строки с командой.
Вышеприведенная команда классифицирует файлы в /etc (и поддиректориях) в обратном порядке по времени их изменения, и выводит отсортированный список разом с их расположением в файловой системе и временем последнего изменения. Если вы также хотите испробовать директории, опустите опцию «-type f». Поиск файлов, которые были модифицированы в заключительные 60 минут в директории /target_directory и во всех ее поддиректориях:
$ find /target_directory -type f -mmin -60
Розыск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и во всех ее поддиректориях:
$ find /target_directory -type f -mtime -2
Розыск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и ее поддиректориях бездной до 3 уровня:
$ find /target_directory -type f -mtime -2 -depth -3
Вы также можете подать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 7 суток, но не позднее чем 3 дня назад:
$ find /target_directory -type f -mtime -7 ! -mtime -3
Все эти бригады выводят только путь к найденным файлам. Вы можете также детализировать вывод данных с помощью опции «-exec».
Поиск файлов в директории /target_directory (и во абсолютно всех ее поддиректориях), которые были модифицированы в последние 60 минут и вывод атрибутов файлов:
$ find /target_directory -type f -mmin -60 -exec ls -al <> \;
В свойстве альтернативы вы можете использовать для этого команду xargs:
$ find /target_directory -type f -mmin -60 | xargs ls -l
Адресуете внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.
Источник
Команда find в Linux – мощный инструмент сисадмина
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
- Дате добавления.
- Содержимому.
- Регулярным выражениям.
Данная команда будет очень полезна системным администраторам для:
- Управления дисковым пространством.
- Бэкапа.
- Различных операций с файлами.
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.
Синтаксис команды find:
- directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
- criteria (критерий) – критерий, по которым нужно искать файлы;
- action (действие) – что делать с каждым найденным файлом, соответствующим критериям.
Поиск по имени
Следующая команда ищет файл s.txt в текущем каталоге:
- . (точка) – файл относится к нынешнему каталогу
- -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.
В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.
Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:
Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:
Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.
Поиск по типу файла
Критерий -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.
- -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
- -exec Выполняет указанную команду в каждой строке результатов поиска.
-delete
Полезен, когда необходимо найти и удалить все пустые файлы, например:
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.
Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.
- command – это команда, которую вы желаете выполнить для результатов поиска. Например:
- rm
- mv
- cp
- <> – является результатами поиска.
- \; — Команда заканчивается точкой с запятой после обратного слеша.
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:
Другой пример использования действия -exec:
Таким образом можно скопировать все .jpg изображения в каталог backups/fotos
Заключение
Команду find можно использовать для поиска:
- Файлов по имени.
- Дате последнего доступа.
- Дате последнего изменения.
- Имени пользователя (владельца файла).
- Имени группы.
- Размеру.
- Разрешению.
- Другим критериям.
С полученными результатами можно сразу выполнять различные действия, такие как:
- Удаление.
- Копирование.
- Перемещение в другой каталог.
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
Источник
Linux найти файлы измененные за сутки
Команда удаляет файлы с расширением *.zip, которые больше 100 мегабайт.
Удалить все файлы с расширением *.tar больше 100Mб используя сокращенный псевдоним rm100m (Remove 100M). Подобным же способом создаём команды для удаления архивов *.tar больше 1, 2 и 5Гб.
Поиск файлов с одновременным изменением прав доступа
Изменим свойства всех php-файлов (php, php4, php5) в директории /var/www/ на 644 (пользователь может изменять и читать, группа и остальные только читать):
Найти файлы, заканчивающиеся определёнными символами/буквами
Найти в каталоге /etc (и во вложенных каталогах) все файлы, имена которых заканчиваются на .conf и владельцем которых является пользователь cupsys.
Удаление временных файлов
Удалим все файлы в текущей директории, заканчивающиеся на
. Обычно файлы с тильдой на конце являются временными файлами, созданными текстовыми редакторами. Этим же способом можно удалить файлы, заканчивающие любыми нужными символами. Вместо xargs безопаснее использовать f ind . -print0 | xargs -0 cmd
Поиск файлов, измененных в определённое время
В четырёх строках ниже производится четыре поиска файлов: тех, что были изменены за предыдущий день, за последние десять минут, более чем год назад и ровно 4 дня назад (четвёртый поиск, наверное, не самый остро необходимый). Внимание: если перед цифрой не стоит + или –, то ищутся файли, изменённые ровно в указанное время.
Опция -daystart определяет отсчет времени с момента начала текущих суток.
Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные вчера, введите:
Чтобы вывести все файлы в каталоге /usr, модифицированные в течение года, введите:
Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные в период от 2 до 4 дней тому назад, наберите:
Чтобы найти все файлы новее определенной даты, используйте следующий трюк: создайте временный файл в каталоге /tmp и установите дату его модификации на требуемую с помощью touch, а затем определите его как аргумент для -newer . Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные после 4 мая текущего года, введите:
Поиск средствами which и whereis
Программа whereis производит поиск исполняемого файла, исходного кода и документации (страницы руководства) для заданной команды, просматривая каталоги из заранее определенного списка. Выведем информацию о местонахождении исполняемого (двоичного) файла и man-страницы для команды ls .
Команда which еще более специализирована. Она ищет путь до заданной команды и выводит первый результат. Следующая команда сообщает, что команда vi — это исполняемый файл /usr/bin/vi. По сути, это ответ на вопрос: «Если бы я ввел команду vi, то какая программа запустилась бы на самом деле?»
Чтобы определить, установлен ли в Вашей системе perl и где он расположен, введите:
Поиск по содержимому файлов с помощью grep
Как мы убедились, средства поиска типа f ind могут искать файлы по имени, размеру, владельцу, времени доступа и многим другим параметрам, но не могут искать файлы по содержимому. Оказывается, файлы достаточно изящно находятся по содержимому при помощи grep , используемой совместно с шаблонами оболочки для файлов. В примере ниже мы просим grep вывести имена файлов, содержащих строку Hudson. Шаблон */* разворачивается оболочкой и означает список всех файлов, находящихся на один уровень ниже текущего каталога.
Если нужно наложить некоторые условия на имя файла, следующей командой будем искать только файлы с расширением .txt, внутри которых есть строка Hudson:
Можно расширить диапазон поиска и на большее количество уровней, но на практике весьма вероятна ситуация, когда подставленных файлов будет столько, что строка со списком аргументов превысит допустимую длину:
Более эффективный подход — использовать grep совместно с f ind . Поиск файлов с расширением .txt, содержащих строку Hudson и находящихся в моем домашнем каталоге (‘
Источник