2016-07-17 3 views
0

У меня возникла проблема с использованием сценария оболочки. Я стараюсь двигаться каждые файлы старше даты я прохожу параметром (как # 2 из папки, переданной в качестве # 1), я в настоящее время используютсохранить ноль слева, используя BC calc

#/bin/bash 
cd $1  # Parameter 1: 
for i in * 
do 
var=$(echo $(ls -l --time-style=+%d%m%y $i) | awk '{print $6}' | bc) 
temp=$(echo $2 | bc) 
if [ $var -lt $temp ] 
then 
cp $i /home/igor/olders 
fi 
done 

, но проблема в том, когда дата предшествует день 10. I не знаю, как сделать это число больше, чем заказы, например, 01/07/16 будет меньше 13/06/16. Кто-нибудь может мне помочь?

+1

Вы можете использовать 'find' для этого. –

+0

Где дата, указанная здесь как параметр? – sjsam

+0

@sjsam дата передается как параметр, когда вы вызываете скрипт, например $ script 130616 –

ответ

1

Вы можете использовать альтернативный вариант предложил в комментарии:

find -newerXY reference 

Цитируя manpage for find(1):

Сравнивает метку времени текущего файла со ссылкой. Аргумент ссылки обычно представляет собой имя файла (и для его сравнения используется одна из его отметк ), но также может быть строка , описывающая абсолютное время. X и Y являются заполнителями для других букв, и эти буквы выбирают, какое время принадлежит тому, как используется сравнение .
Некоторые комбинации: недействительный; например, для X это недействительно. Некоторые комбинации не реализованы на всех системах; например, B не поддерживается на всех . Если неверная или неподдерживаемая комбинация XY равна , возникает фатальная ошибка. Спецификации времени интерпретируются как аргумент опции -d для даты GNU. Если вы попытаетесь использовать время рождения ссылочного файла, а время рождения не может быть определено , это приводит к фатальному сообщению об ошибке. Если вы укажете тест, который относится к времени рождения проверяемых файлов, этот тест завершится ошибкой для любых файлов, в которых время рождения неизвестно.

Если вы хотите придерживаться своего сценария, просто измените формат команды ls. В настоящее время вы используете --time-style=+%d%m%y, когда вы, вероятно, захотите --time-style=+%y%m%d (нужен тот же стиль, что и параметр или переключатель в вашем скрипте).

+1

спасибо человеку, это действительно сработало –

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