LinuxForum.Fans
Тема

Проверка существования файла с текущей датой

Автор: InVariable 13 сообщений 4616 просмотров
#196084

Дали задачку проверять наличие файла вида xxxxx28-09-2011_00-22.xxx существует он или нет.
Подскажите как это реализовать?

#196085

Смотря на каком языке и пр.
На пример, на PHP есть функция file_exist.

#196086
emlsch написал:
Смотря на каком языке и пр.
На пример, на PHP есть функция file_exist.

bash

#196087

bash:

text
if [ -f xxxxx28-09-2011_00-22.xxx ]; then
   <command>
fi
#196088
text
if [ -e /home/file ]
 
    then echo OK
 
    else echo NO_OK
 
fi
#196089
emlsch написал:
text
if [ -e /home/file ]
 
    then echo OK
 
    else echo NO_OK
 
fi

Нужно чтобы он его выцеплял из массива файлов, а не просто по имени...

#196092
InVariable написал:
[quote=emlsch]
text
if [ -e /home/file ]
 
    then echo OK
 
    else echo NO_OK
 
fi

Нужно чтобы он его выцеплял из массива файлов, а не просто по имени...[/quote]

Товарищ, команда для проверки существования файлов, как и команды массивов находятся на первой странице поиска в Google.
Вы бы сначала почитать про bash скрипты, их составления, основные команды - у вас бы многое уложилось в голове. А таким подходом вы и время людей тратите и эффективности ноль, ибо не понимаете сути.

#196095
emlsch написал:

Суть я понимаю, смысла читать справочники не вижу, так как надо понять не структуру скрипта, мне непонятно как выцепить правильный файл из большого количества файлов, и из имени правильного файла дату и сравнить её с текущей...

#196119

[console]
date=$(date +%F)
date_cut=` echo $date | cut -c 6-10`
file_full_info=$(ls -l /home/000/ | grep $date_cut)
file_name=` echo $file_full_info | cut -c 52-77`
cd /home/000/
size=$(ls -l $file_name | cut -c 24-33 )
critical_size=1073741824



if (("$size" > "$critical_size")); then
echo "OK $file_name $size"
EXIT_STATE=$STATE_OK

elif (("$size" < "$critical_size")); then
echo "CRITICAL! $file_name $size"
EXIT_STATE=$STATE_CRITICAL
else
echo "UNKNOWN!"
EXIT_STATE=$STATE_UNKNOWN
fi

exit $EXIT_STATE
[/console]

#196421
InVariable написал:
[console]
date=$(date +%F)
date_cut=` echo $date | cut -c 6-10`
file_full_info=$(ls -l /home/000/ | grep $date_cut)
file_name=` echo $file_full_info | cut -c 52-77`
cd /home/000/
size=$(ls -l $file_name | cut -c 24-33 )
critical_size=1073741824



if (("$size" > "$critical_size")); then
echo "OK $file_name $size"
EXIT_STATE=$STATE_OK

elif (("$size" < "$critical_size")); then
echo "CRITICAL! $file_name $size"
EXIT_STATE=$STATE_CRITICAL
else
echo "UNKNOWN!"
EXIT_STATE=$STATE_UNKNOWN
fi

exit $EXIT_STATE
[/console]

Неизящно, но работает....

#196509
InVariable написал:
проверять наличие файла вида xxxxx28-09-2011_00-22.xxx существует он или нет.

а так?
[console]find путь_где_искать -name '*28-09-2011_00-22.*' -exec cat {} \;[/console]
команда выведет на экран содержимое файла, если он есть, вместо cat можно поставить любую другую команду, {} это имя найденного файла командой find

#196517
InVariable написал:
Неизящно, но работает....

не "неизящно", а просто жесть какая-то... для одного файла я ещё понимаю, как оно работает/что делает... а если файлов несколько?
в любом случае(набросал на коленке):
[console]
DATE="$(date +%m-%d)"
FILE_LIST="$(ls /home/000/*$DATE*)"
CRYT_SIZE=1073741824

echo $FILE_LIST | while read FILE;do
SIZE=$(du -b --apparent-size $FILE | cut -f 1)
if (("$SIZE" > "$CRYT_SIZE")); then
echo "OK $FILE $SIZE"
else
echo "CRITICAL! $FILE $SIZE"
exit $STATE_CRITICAL
fi
done
[/console]

Войдите или зарегистрируйтесь, чтобы ответить.