Днес ще ви покажем начин, по който можете изтрийте файлове, които са по-стари от „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. Аз също го търся и най-накрая намерих решението тук.
Това получава ли файлове и в поддиректории? Ако е така, как да го направя, за да не стане?
find /home/greg/logs -type f -mtime +5 -exec rm {};
Търсих такава команда. Наистина полезно. И благодаря за споделянето на сценария, Вивиан.