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

Объяснение команды:
Первый аргумент в приведенной выше команде - это путь к файлам. Второй аргумент -MTime используется для указания возраста файла в днях. Если вы введете +5, будут найдены файлы старше пяти дней. Последний аргумент -Exec позволяет передать такую команду, как rm. В {} \; в конце требуется завершить команду.
Это должно работать практически на всех версиях Linux, таких как Ubuntu, Fedora, Red Hat, Suse и т. Д. Если вы столкнулись с какой-либо проблемой, которая здесь кажется совершенно невозможной, сообщите нам об этом в комментариях ниже.
Сурадж Салунхе
Я использовал эту уловку! Шикарный трюк! Спасибо, что поделились таким хорошим трюком :)
Амрута Патил
Я использовал эту команду на тренировке RHCE.
Бен
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Выделили кое-что из вашего предложения здесь. Метод создания списка файлов пятидневной давности в виде простого текстового файла. Легче вести запись для просмотра перед удалением файлов. Затем пользователи могут использовать cat, vi, vim, gedit, emacs, чтобы увидеть, что они могут выбросить.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Разбить его ./ - это текущий каталог. Поиск с использованием текущего каталога часто безопаснее, чем с использованием / cannon. >> добавляет в файл, если он не существует, он создается.
Даже подумал, может пригодиться как псевдоним. Вероятно, может / должен сначала перенести его в сценарий оболочки. Хотя ленивый, здесь поздно.
Бен Пайпер
Спасибо! Я использовал этот синтаксис в работе cron.
Вивьен
Хороший совет по удалению файлов старше определенных дней. Однако, если ваш список аргументов длинный (я думаю, что максимальное значение составляет 65535 или что-то в этом роде), это не сработает.
У меня есть собственный сценарий, который выполняет эту работу:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
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 {};
Сурадж Салунхе
Искал такую команду. Действительно полезно. И спасибо, что поделились сценарием, Вивиан.