Необходимо получить файлы между двумя заданными датами с помощью скрипта KornShell (ksh). Если в один день есть несколько файлов, получите последние файлы для этого дня.Скрипт KornShell для получения файлов между двумя датами
ответ
Я не пробовал, но есть a mailing list post об обнаружении файлов между двумя датами. Соответствующая часть:
Touch 2 файлов, start_date и stop_date, как это: $ сенсорный -t +200603290000,00 start_date $ сенсорный -t 200603290030,00 stop_date
Ok, start_date является 03/29/06 полночь, stop_date - 03/29/06 Спустя 30 минут после полночь. Возможно, вы захотите сделать ls -al для проверки.
Чтобы найти, вы можете найти -newer и , тогда! -ново, вот так: $ find/dir -newer start_date! -newer stop_date -print
Объедините это с ls -l, вы получите: $ find/dir -newer start_date! -newer stop_date -print0 | xargs -0 Ls -l
(Или вы можете попробовать выполнить -exec Ls -l. Я не уверен в формате, так что вы должны гадость вокруг немного)
в Баш shell, просто пример, вы можете использовать -nt test operator (оболочка korn поставляется вместе с ней, если я не ошибаюсь).
printf "Enter start date(YYYYMMDD):"
read startdate
printf "Enter end date(YYYYMMDD):"
read enddate
touch -t "${startdate}0000.00" sdummy
touch -t "${enddate}0000.00" edummy
for fi in *
do
if [ $fi -nt "sdummy" -a ! $fi -nt "edummy" ] ;then
echo "-->" $fi
fi
done
В скорлупе ореха для KSH:
!/usr/bin/ksh
# main from_date to_date path
# date format: YYMMDDhhmmss
ls -l --time-style "+%y%m%d%H%M%S" $3 | awk '{ print $6 " " $7 }' | while read t n
do
if ((t > $1)) && ((t < $2)); then
echo $t $n
fi
done
Что вы имеете в виду две даты? Являются ли даты частью имени файла или вам нужно получить файлы на основе их времени доступа, времени создания? –