bash удалить файлы старше дней
bash как удалить файлы и директории, старше x-дней?
Есть некая директория Test. В ней находятся файлы и папки. Как удалить только то, что старше 10 дней к примеру.
приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.
Там не только файлы под удаление, но и папки, в том то и проблема.
При Test, без свежих файлов, удаляет и саму Test
Разница в скорости будет незаметна, но зато есть везде, ибо posix. Но для не \;, а +
При Test, без свежих файлов, удаляет и саму Test
Вариант с * не затронет сам каталог
Утилита tmpwatch. Одна короткая строчка. И никаких предлагаемых тут нагромождений.
приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.
делай touch /path/to/search/dir/.placeholder перед запуском find и всё. Никаких find dir/*, это пропустит все файлы и директории начинающиеся с точки «.»
с возможностью появления завтра у ТСа еще вопроса, например, что делать, если
Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.
Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.
Вот только у вас не Ванга, а натуральный наполеонизм какой-то. Я комментировал не вас, а teod0r-а, который комментировал скрипт bash как удалить файлы и директории, старше x-дней? (комментарий)
Скорее всего я просто не совсем верно интерпретировал ваш пост.
Как найти и удалить файлы старше X дней в Linux
Очень важно находить и очищать старые файлы, которые больше не нужны через определенный промежуток времени.
Вот быстрый способ сделать это.
В этом кратком руководстве вы узнаете, как находить и удалять файлы старше X дней в Linux и Unix-подобных операционных системах.
Найти и удалить файлы старше X дней в Linux
Отказ от ответственности: вы должны быть очень осторожны при выполнении этих команд.
Эти команды не запрашивают подтверждения перед удалением файлов.
Он просто удалит файлы после нажатия клавиши ENTER. Так что будьте очень осторожны!
Сначала давайте узнаем файлы старше X дней, например 30 дней.
Чтобы сделать так, просто:
Вышеупомянутая команда найдет и отобразит старые файлы старше 30 дней. Вот,
dot (.) – Представляет текущий каталог.
-mtime – представляет время изменения файла и используется для поиска файлов старше 30 дней.
-print – отображает старые файлы
Если вы хотите искать файлы в определенном каталоге, просто замените точку на путь папки.
Например, чтобы узнать файлы, которые старше 30 дней в каталоге / home / sk / Downloads, просто запустите:
Теперь, чтобы удалить файлы, запустите любую из следующих команд.
Снова предупреждаю вас, что эти команды будут удалять файлы сразу после нажатия кнопки ENTER.
Перед выполнением этих команд будьте осторожны и дважды проверьте их.
Периодически удаляйте старые файлы, если они не нужны через регулярные промежутки времени, или резервируют их на любые внешние диски и освобождают место на диске.
Вы можете использовать свободное пространство для любых других полезных целей.
How to delete files older than X hours
I’m writing a bash script that needs to delete old files.
It’s currently implemented using :
This will delete of the files older than 1 day.
9 Answers 9
Or maybe look at using tmpwatch to do the same job. phjr also recommended tmpreaper in the comments.
Here is the approach that worked for me (and I don’t see it being used above)
deleting all the files older than 59 minutes while leaving the folders intact.
-mmin is for minutes.
Try looking at the man page.
If we were able to create a file that that has an mtime of our cut-off time, we can ask find to locate the files that are «not newer than» our reference file.
Fortunately, other old tools can manage this, albeit in a more unwieldy way.
To begin finding a way to delete files that are over six hours old, we first have to find the time that is six hours ago. Consider that six hours is 21600 seconds:
Since the perl statement produces the date/time information we need, use it to create a reference file that is exactly six hours old:
Now that we have a reference file exactly six hours old, the «old UNIX» solution for «delete all files older than six hours» becomes something along the lines of:
It might also be a good idea to clean up our reference file.
Команды для удаления большого количества файлов в Linux
Удаление старых файлов linux по маске чаще всего осуществляется следующим образом:
При удалении таким образом очень большого количества файлов из определенного каталога может выдавать ошибки — причина в том, что система на самом деле не видит маски и разворачивает передаваемое ей выражение — срабатывает ограничение на количество аргументов, и выполнение команды прекращается.
Синтаксис в простейшем случае может выглядеть так:
for f in /var/log/apache2/*.log; do rm «$f»; done
В цикл for можно добавить любую дополнительную логику.
Удаление старых файлов в Linux по Cron
Логи или другие файлы (сессии РНР) можно удалять как используя циклы (так приходится делать обычно если логов или других файлов накопилось действительно очень много), но если система не запущена или только создается лучше использовать регулярно выполняемое задание Cron, согласно которому с заданной периодичностью будут удаляться файлы определенных типов
# m h dom mon dow command
В примере удаляются сессии РНР для сайта старше 7 дней.
В цикле то же самое можно сделать так:
for f in /tmp/logs/*.log
Приведенное выражение, как и любой другой цикл можно поместить в файл, сделать его исполняемым и с тем же успехом выполнять по Cron
Как удалить файл через терминал Linux
Эта небольшая заметка ориентирована на совсем начинающих. Сегодня мы рассмотрим как удалить файл linux через терминал. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. Знать как работать с файлами в консоли очень важно.
К тому же удаление из консоли дает много преимуществ и большую гибкость. Например, с помощью специальной команды вы можете полностью стереть файл с жесткого диска, так что его уже ни за что невозможно будет восстановить или одной командой с помощью специальных символов, условий или регулярных выражений удалить сотни ненужных файлов в одном каталоге или подкаталогох соответствующих определенному критерию.
В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные, стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.
Удаление файлов в Linux
Чтобы удалить файл linux достаточно передать в параметрах команде адрес файла в файловой системе:
Чтобы удалить все файлы, начинающиеся на слово file можно использовать специальный символ *, означает любой символ в любом количестве:
rm: удалить пустой обычный файл «/home/user/file»?
Будет удалено все что находиться в папке dir, и эта папка. Только будьте бдительны, чтобы не получился знаменитый патч Бармина:
Не стоит выполнять эту команду в своей системе, как видите, она удаляет все файлы в файловой системе Linux.
Удаление файла в linux также возможно с помощью утилиты find. Общий синтаксис find:
find папка критерий действие
Например, мы хотим удалить файл linux по имени:
Удалить все файлы в текущей директории, соответствующие определенному регулярному выражению:
Или удалить файлы старше определенного строка, может быть полезно для удаления старых логов:
Будет выполнено удаление файлов через терминал все файлы в папке старше 5-ти дней.
Выводы
Вот и все. Теперь вы знаете как удалить файл в Ubuntu, как видите, делать это не так уж сложно. Если у вас остались вопросы, пишите в комментариях!