LINUX.ORG.RU

проверка timestamp из имени директории на bash


0

1

у меня есть скрипт который проверяет наличие файла и в каждой директории и в зависимости от этого делает вещи:

cd $root
for i in $(ls)
do
        if [ ! -e "$root/$i/$img" ]; then
echo OK
<some code>

fi
done

Имена директорий выглядят как: 20140404102130-aaa.
Мне нужно вставить в этот цикл условие, чтобы проверялась еще и часть имени директории: если timestamp (до дефиса) больше указанного, то выполняем echo OK и следующие действия, если нет - идем по циклу дальше.

Что-то вроде:
if [ 'ls|awk -F "-" '{print $1}" > 20140404102130 ]; then

Как этот кусок правильно вставить в цикл?


Можно просто в лексикографическом формате сравнивать. Тогда и вырезать ничего не надо. Естественно формат записи даты должен совпадать, тогда следующие символы не влияют на неравенство (т.е. строки никогда не будут равны, но можно выяснить какая больше):

if [[ "$i" > "20140404102130" ]]; then
...
fi

ziemin ★★
()

Ну, например: stat -c %Y "$i".

anonymous
()

Имена директорий выглядят как: 20140404102130-aaa.

ваще-то timestamp получают командой stat.

но ты можешь делать и через жопу, сначала получив штамп ${DIR%-*}, а потом проверить его как число (если оно влезет в 64х битное целое), командой (( TS < 20140404102130 )).

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.