URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9831
[ Назад ]

Исходное сообщение
"поиск выржения в названиях файлов"

Отправлено konsai , 16-Фев-14 09:33 
Господа, прошу помощи знатоков.
Есть скрипт поиска в названиях файлов выражения, получаемого из БД

#!/bin/bash
DIR=/home/konsai/test
CSHIFT=`mysql -u konsai test -N -e "select max(shiftno) from shiftslog"`
if [ -e $DIR/$CSHIFT ];
  then echo "есть такой файл" $CSHIFT
else
  echo "Нет такого файла"
fi

запрос mysql возвращает 65180
директория содержит файлы shift_65180_16.02.14.tgz, shift_65170_15.02.14.tgz ну и так далее
В общем - выражение из базы содержится в названии файла.
просто файл 65180 если создать - скрипт работает правильно. файл находит. если его удалить - не находит.
Спасибо за помощь!


Содержание

Сообщения в этом обсуждении
"поиск выржения в названиях файлов"
Отправлено михалыч , 16-Фев-14 11:54 
> запрос mysql возвращает 65180
> директория содержит файлы shift_65180_16.02.14.tgz, shift_65170_15.02.14.tgz ну и так
> далее
> В общем - выражение из базы содержится в названии файла.
> просто файл 65180 если создать - скрипт работает правильно. файл находит. если
> его удалить - не находит.
> Спасибо за помощь!

а так

DIR=/home/konsai/test
CSHIFT=`mysql -u konsai test -N -e "select max(shiftno) from shiftslog"`
ls $DIR | grep -q $CSHIFT
if [ $? -eq 0 ];
  then echo "есть такой файл" $CSHIFT
else
  echo "Нет такого файла"
fi

c find'ом у меня так вышло

DIR=/home/konsai/test
CSHIFT=`mysql -u konsai test -N -e "select max(shiftno) from shiftslog"`
if [ -n "$(find $DIR -name "*$CSHIFT*")" ];
  then echo "есть такой файл" $CSHIFT
else
  echo "Нет такого файла"
fi


"поиск выржения в названиях файлов"
Отправлено konsai , 16-Фев-14 19:08 
Михалыч, это пять
второй вариант меня устроил больше, потому что, он хотя бы выводит результат в консоли если просто ввести find -name "*65180*"

"поиск выржения в названиях файлов"
Отправлено михалыч , 16-Фев-14 19:18 
> Михалыч, это пять
> второй вариант меня устроил больше, потому что, он хотя бы выводит результат
> в консоли если просто ввести find -name "*65180*"

гыг-гыг.. я думал нужно просто получить да - нет, есть такой файл или нет
а так, в первом варианте из grep убрать ключик -q ( quiet/тихий ) и будет выводить то что найдёт

вот так, с цифирькой -1 (один) оно идеологически для grep'а даже правильнее
ls -1 $DIR | grep "$CSHIFT"


"поиск выржения в названиях файлов"
Отправлено konsai , 16-Фев-14 20:02 
каюсь ... в матчасти слаб.. пойду посыплю бошку пеплом!
Спасибо еще раз!