Сьогодні ми покажемо вам шлях, яким ви можете видаляти файли, старші за 'X' днів. Припустимо, ви хочете видалити файли старше 7 днів, ця стаття допоможе вам це зробити. Утиліта find дозволяє вам передати кілька цікавих аргументів, включаючи один для виконання іншої команди для кожного файлу. Щоб з’ясувати, які файли старіші за певну кількість днів, ми скористаємося цим знайти корисність а потім використовуйте команда rm щоб видалити їх. Синтаксис команди такий:
знайти /шлях/до/файлів* -mtime +5 -exec rm {} \;
Ми не несемо відповідальності за будь-яку втрату даних, яка може статися. Ми рекомендували вас до перерахуйте файли та перевірте перед їх видаленням, виконавши таку команду:
знайти /шлях/до/файлів* -mtime +5 -exec ls {} \;
Примітка: Між rm, {} і \ є пробіли;

Пояснення команди:
Першим аргументом у наведеній вище команді є шлях до файлів. Другий аргумент -Mtime використовується, щоб вказати, скільки днів тому файлу. Якщо ви введете +5, він знайде файли старше п’яти днів. Останній аргумент Exec- дозволяє передати таку команду, як rm. The {} \; в кінці потрібно завершити команду.
Це має працювати майже на всіх версіях Linux, таких як Ubuntu, Fedora, Red Hat, Suse тощо. Якщо ви зіткнулися з проблемою, яка здається абсолютно неможливою, повідомте нам про це в коментарях нижче.
Я використав цей трюк! Чудовий трюк! Дякую, що поділилися таким гарним трюком :)
Я використовував цю команду під час тренування RHCE.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
псевдонім 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Зібрав щось разом із вашої пропозиції. Метод створення простого текстового файлу зі списком файлів п’ятиденної давності. Легше зберігати запис для перегляду перед видаленням файлів. Потім користувачі можуть використовувати cat, vi, vim, gedit, emacs, щоб побачити, що вони можуть викинути.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Розбивка ./ – це поточний каталог. Знайти використання поточного каталогу часто безпечніше, ніж використання / cannon. >> додає до файлу, якщо він не існує, він створюється.
Навіть думав, що це може бути корисним як псевдонім. Ймовірно, спершу можна / потрібно перенести його до сценарію оболонки. Бути ледачим, але пізно тут.
Дякую! Я використовував цей синтаксис у роботі cron.
Хороша порада для видалення файлів, старіших за певні дні. Однак, якщо ваш список аргументів довгий (я думаю, що максимальне значення становить 65535 або щось подібне), це не спрацює.
У мене є спеціальний скрипт, який виконує роботу:
#!/bin/bash
cd /каталог для перевірки
allfiles=`ls`
NOW=`дата +%s`
для імені файлу в $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
потім
ЗАТРИМКА=86400
ще
нехай "ЗАТРИМКА=$2 * 86400"
fi
AGE=`вираз $NOW - $OLD`
#echo "Затримка становить $DELAY, а вік - $AGE"
#вихід 0
якщо [ $AGE -gt $DELAY ]
потім
#echo "Файл $filename є $AGE"
fstamp=`ls -l $назва файлу`
if [ "$1" == "DEL" ]
потім
echo "Видалення файлу $filename"
`rm -f $ім'я файлу`
ще
echo "$fstamp"
fi
fi
Пожертвувати.
Дякую, що надали сценарій.
Ласкаво просимо Намасе.
Назвіть сценарій так:
./scriptname.sh DEL numDays
Якщо numDays не вказано, буде використовуватися мінімум 1, тому переконайтеся, що ви вказали numDays. Я не несу відповідальності за те, як ви використовуєте цей сценарій, і за будь-яку втрату даних, яка може статися.
якщо я хочу видалити каталоги та файли 30-денної давності на мою віддалену машину та одну річ, за винятком 1 та 2 чи 3 каталогів, і як я можу це зробити ..?? Поділіться, будь ласка, своїми думками.
Я використовую цю техніку, вона дуже корисна для видалення файлу trc в Oracle
Дякуємо, що поділилися цією корисною командою для всіх користувачів. Ми можемо легко видалити старі файли в Linux. Я також шукаю це і нарешті знайшов рішення тут.
Це також отримує файли в підкаталогах? Якщо так, то як я можу це зробити, щоб цього не було?
знайти /home/greg/logs -type f -mtime +5 -exec rm {} ;
Я шукав таку команду. Дійсно корисно. І дякую, що поділилася сценарієм, Вівіан.