2012-04-16 2 views
0

В каталоге есть файлы, которые создаются ежедневно. Формат файлов, если он сгенерирован 16 апреля 2012 года, - TEST_20120416.Удаление файлов на основе CreationTime

Поэтому мне нужно удалить все файлы старше 7 дней. Я попытался сделать это

#!/bin/ksh 
find /data/Test/*.* -mtime -7 -exec rm -rf {} \; 
exit 0 

Теперь проблема выше кода УДАЛЕНИЕ в зависимости от времени модификации, но по требованию файл должен удалять основанный на создании time.Kindly помочь мне в удалении файлов на основе имени файла (имя файла имеет временную метку) ,

+1

[Время создания файла зависит от файловой системы] [1] [1]: http://stackoverflow.com/questions/5929419/how-to-get-file-creation-date-in-linux – tuxuday

+0

@tuxuday. .. и на самом деле большинство файловых систем там даже не отслеживают время создания файла. Многие наивно интерпретируют 'ctime' как« время создания », но это совсем не то, что у него есть ... – twalberg

ответ

0

Как вы к счастью дата создания закодированы в имени файла, это должно работать:

#!/bin/sh 
REFDATE=$(date --date='-7 days' +%Y%m%d) 
PREFIX=TEST_ 
find /data/Test/ -name $PREFIX\* | while read FNAME; do 
    if [ ${FNAME#$PREFIX} -lt $REFDATE ]; then 
     rm $FNAME 
    fi 
done 

Он будет выдавать предупреждение, если у вас есть какие-то другие файлы с именами, начинающимися с test_ в этом случае может потребоваться еще несколько фильтрации.

-1
find /data/Test/*.* -ctime -7 -delete 

'поиск/данные/Испытание/. 'найдет все файлы в папке/data/Test, а аргумент' -ctime -7 'ограничит поиск временем создания до 7 дней, а опция -delete удалит такие файлы.

+1

Фильтры' -mtime' на время модификации. Оптимальным выбором был бы '-ctime'. Также см. Здесь: http://stackoverflow.com/q/10171069/694576 – alk

+2

Если вы отправляете однострочный ответ в качестве ответа, по крайней мере, объясните в одном или двух предложениях, что он делает. Никто не выполнит случайные команды из Интернета на своем компьютере. –

+0

Хорошо, мое плохое. find /data/Test/*.* найдет все файлы в папке/data/Test, а аргумент -ctime -7 ограничит поиск временем создания до последних 7 дней, а опция -delete удалит такие файлы. –

Смежные вопросы