Linux оставить n последних файлов

Как найти и удалить файлы старше X дней в Linux

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

Вот быстрый способ сделать это.

В этом кратком руководстве вы узнаете, как находить и удалять файлы старше X дней в Linux и Unix-подобных операционных системах.

Найти и удалить файлы старше X дней в Linux

Отказ от ответственности: вы должны быть очень осторожны при выполнении этих команд.

Эти команды не запрашивают подтверждения перед удалением файлов.

Он просто удалит файлы после нажатия клавиши ENTER. Так что будьте очень осторожны!

Сначала давайте узнаем файлы старше X дней, например 30 дней.

Чтобы сделать так, просто:

Вышеупомянутая команда найдет и отобразит старые файлы старше 30 дней. Вот,

dot (.) – Представляет текущий каталог.
-mtime – представляет время изменения файла и используется для поиска файлов старше 30 дней.
-print – отображает старые файлы

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

Например, чтобы узнать файлы, которые старше 30 дней в каталоге / home / sk / Downloads, просто запустите:

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

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

Перед выполнением этих команд будьте осторожны и дважды проверьте их.

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

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

Источник

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 минут, и вывести их атрибуты:

Читайте также:  Не активна кнопка удалить том windows 10

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

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

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

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

Источник

Как удалить все, кроме 10 новейших файлов в Linux?

Я пытаюсь держать каталог, полный файлов журнала, управляемым. Ночью я хочу удалить все, кроме 10 самых последних. Как я могу сделать это в одной команде?

Для портативного и надежного решения, попробуйте это:

tail -n -10 Синтаксис в одном из других ответов , кажется , не работать везде (то есть, не на моих системах RHEL5).

И использование $() или « в командной строке rm рискует

  1. разделение имен файлов пробелами и
  2. превышение максимального ограничения символов командной строки.

xargs устраняет обе эти проблемы, потому что он автоматически выяснит, сколько аргументов он может передать в пределах ограничения на количество символов, и при этом -d ‘\n’ он будет разбиваться только на границе строки ввода. Технически это все еще может вызвать проблемы для имен файлов с новой строкой в ​​них, но это гораздо реже, чем имена файлов с пробелами, и единственный способ обойти новые строки будет намного сложнее, вероятно, с использованием по крайней мере awk, если не perl.

Если у вас нет xargs (возможно, старых систем AIX?), Вы можете сделать это циклом:

Это будет немного медленнее, потому что он порождает отдельное rm для каждого файла, но все равно будет избегать предостережений 1 и 2 выше (но все еще страдает от новых строк в именах файлов).

Код, который вы хотите включить в свой скрипт

Опция -1 (числовая) печатает каждый файл в одной строке, чтобы быть в безопасности. -f Вариант rm говорит , что игнорировать файлы несуществующие для того, когда ls возвращает ничего.

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

Или, если каждый файл создан произвольно:

Такой инструмент, как logrotate, сделает это за вас. Это делает управление журналами намного проще. Вы также можете включить дополнительные процедуры очистки, такие как предложенный гало.

Теперь он работает с желаемым путем:

В Bash вы можете попробовать:

Это пропускает 10 новейших файлов, удаляет остальные. logrotate может быть лучше, я просто хочу исправить неправильные ответы, связанные с оболочкой.

Не уверен, что это кому-нибудь поможет, но чтобы избежать потенциальных проблем со странными символами, которые я использовал ls для сортировки, а затем использовать файлы inode для удаления.

Для текущего каталога это сохраняет последние 10 файлов в зависимости от времени модификации.

ls -1tri | awk ‘‘ | head -n -10 | xargs -n1 -t -Iinode find . -inum inode -exec rm -i <> \;

Мне нужно было элегантное решение для busybox (роутера), все решения xargs или array были для меня бесполезны — такой команды там не было. find и mtime не правильный ответ, так как речь идет о 10 пунктах и ​​не обязательно 10 днях. Ответ Эспо был самым коротким и чистым и, вероятно, самым неожиданным.

Читайте также:  Windows не включает яндекс

Ошибка с пробелами и когда файлы не должны быть удалены, просто решаются стандартным способом:

Немного больше образовательной версии: мы можем сделать все это, если будем использовать awk по-другому. Обычно я использую этот метод для передачи (возврата) переменных из awk в sh. Поскольку мы все время читаем, что не может быть сделано, я позволю себе не согласиться: вот метод.

Пример для файлов .tar без проблем с пробелами в имени файла. Чтобы проверить, замените «rm» на «ls».

ls -td *.tar перечисляет все файлы .tar, отсортированные по времени. Чтобы применить ко всем файлам в текущей папке, удалите часть «d * .tar»

awk ‘NR>7. пропускает первые 7 строк

print «rm \»» $0 «\»» конструирует строку: rm «имя файла»

eval выполняет это

Поскольку мы используем rm , я бы не использовал вышеуказанную команду в сценарии! Более разумное использование:

В случае использования ls -t команда не нанесет никакого вреда таким глупым примерам, как: touch ‘foo » bar’ и touch ‘hello * world’ . Не то чтобы мы когда-либо создавали файлы с такими именами в реальной жизни!

Примечание. Если бы мы хотели передать переменную sh таким образом, мы бы просто изменили вывод:

установить переменную VarName в значение $1 . Несколько переменных могут быть созданы за один раз. Это VarName становится нормальной переменной sh и впоследствии может быть использовано в скрипте или оболочке. Итак, чтобы создать переменные с помощью awk и вернуть их обратно в оболочку:

Источник

Как найти новые файлы в Linux

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

Операционная система Linux, как всегда, радует множеством способов для решения этой задачи. В этой инструкции мы рассмотрим некоторые из них.

Поиск новых файлов в Linux

Способ 1. Утилита find

Самый распространенный способ найти новые файлы в linux — это воспользоваться утилитой find. В зависимости от ситуации и потребностей утилите передаются различные параметры, можно искать файлы в конкретном диапазоне дат, новее определенной даты или новее определенного файла. Рассмотрим все подробнее.

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

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

Но это слишком громоздко, да и не нужны нам все файлы, нам надо только новые. Следующей командой можно получить все файлы, измененные или созданные за последние 60 минут:

find /etc -type f -mmin -120

Чтобы найти последние измененные файлы linux за последних два дня используете параметр mtime:

find /etc -type f -mtime -2

Если нужно не углубляться в подкаталоги ниже третьего уровня, используйте опцию maxdepth:

find /etc -maxdepth 3 -mtime -2 -type f

Также можно задать диапазон времени, в котором был создан или изменен файл. Например, чтобы посмотреть новые файлы linux за последние семь дней, но исключая последние три дня, наберите:

find /etc -type f -mtime -7 ! -mtime -3

Все эти команды выводят только путь к файлу, но также можно посмотреть атрибуты с помощью опции —exec. Выведем подробные атрибуты новых файлов, выполнив для каждого из них утилиту ls:

Читайте также:  Windows all version information

find /etc -type f -mmin -120 -exec ls -al <> \;

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

find /etc -type f -mmin -120 | xargs ls -l

Утилита find также позволяет найти файлы новее определенного файла. Например, создадим эталонный файл:

И найдем все файлы в корневом каталоге, созданные после его него:

find / -type f -newer /tmp/test

Способ 2. ls

Этот способ намного проще первого, но за простоту мы платим гибкостью. Команда ls тоже умеет сортировать файлы в директории по дате создания. Просто выполните:

В данном случае самый новый файл будет в самом низу. Если файлов очень много можно обрезать вывод с помощью tail:

Выводы

Возможно, это еще не все способы найти новые файлы в Linux, но тут уже есть из чего выбрать лучшее решение для конкретной ситуации. Как показано в этой статье, базовые команды поиска find и ls могут получить еще большую гибкость в объединении с утилитами сортировки sort, а также фильтрации tail и grep.

Источник

linux-notes.org

Команда tail в операционных системах UNIX или Linux используется для вывода последних N строк из файла на терминал. Команда tail особенно используется с лог-файлами, чтобы вывести последние несколько строк, чтобы знать о ошибках. Синтаксис команды tail таков:

Параметры команды tail таковы:

  • c : Выводит последние N байт указанного файла; Выводит + печатает символы N байт в файле.
  • n : Выводит последние N строк; Выводит + печатает строки из N-го количества строк в файле.
  • f : Вывод строк в режиме реального времени ( выводит когда появляются новые строки в файле).

Утилита tail в примерах Unix/Linux

В своей статье «Утилита tail в примерах Unix/Linux» я хотел бы рассказать о замечательной утилите tail и привести готовые примеры использования.

Создайте следующий файл use_tail.txt в операционной системе Linux или Unix для практикующих примеров со следующим содержанием:

Вывод последних 10 строк.

По умолчанию, команда tail печатает последние 10 строк из файла:

Вывести последние N строк.

Используйте опцию «-n», чтобы напечатать последние N строк из файла. Следующий пример печатает последние 3 строки из файла:

Вывести строки из N-й строки.

Вы можете печатать строки, начиная с N-й строки в файле. Следующий пример печатает строки начиная с 4-й линии:

Вывести последние n байт.

Использовать опцию «-c» для вывода последних N байт из файла. Следующий пример печатает последние 7 байт из файла:

5. Print characters from the Nth byte

Используйте следующий символ «+» с опцией «-c» чтобы печатать символы с N-го байта. Следующий пример печатает символы с 69-го байта.

Выводить последние строки из файла динамически (в режиме реального времени).

Опция «-f» выводит строки из файла, который динамично растет. При запуске команды «tail -f» с именем файла, он будет печатает последние 10 строк и ожидать новых линий, которые будут добавлены в файл. Всякий раз, когда новые линии добавляется в файл, команда tail также добавляет новые строки на стандартный вывод (на терминал). Опция «-f» полезна при отладке приложений.. Вы можете использовать опцию «-f», чтобы начать анализировать вывод разных ошибок в режиме реального времени:

На этом, у меня все, тема «Утилита tail в примерах Unix/Linux» завершена.

Источник

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