Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: mars в Nov 13, 2007, 14:48



Титла: проверка за по-нови файлове от скрипт?
Публикувано от: mars в Nov 13, 2007, 14:48
Целта ми е да мога в баш скрипт да направя:

if (dir1 contains file newer than 19:30)
do something

Как може да стане това?


Титла: проверка за по-нови файлове от скрипт?
Публикувано от: VladSun в Nov 13, 2007, 16:24
man find

по-специално:

--newer и --exec параметрите





Титла: проверка за по-нови файлове от скрипт?
Публикувано от: Nikolavp в Nov 13, 2007, 16:25
Цитат (mars @ Ноември 13 2007,15:48)
Целта ми е да мога в баш скрипт да направя:

if (dir1 contains file newer than 19:30)
do something

Как може да стане това?

Хмм малко грозно, ма все пак да схванеш идеята...
Примерен код

direktokriq=""
for file in $direktoriq;do
   if [[ 19:30 < $(ls -l "${file}" | awk '{print $7}') ]];then
     echo "The file is newer"
   fi
done

Кода отгоре изобщо не е красив и сигурно има по добър начин вместо да се прави цикъл, ще помоля някого с повече знания да се обади. Също тази имплементация няма да работи ако файла от вчера от  часовете след 19:30 бъде проверен ;). Може би има някоя опция на финд също...

Едит: Щом Vladsun казва значи има :)





Титла: проверка за по-нови файлове от скрипт?
Публикувано от: Hapkoc в Nov 13, 2007, 16:44
Nikolavp, не се обиждай, но скрипта ти е съвсем грешен :)

Оставям настрана признанието ти, че не е красив:

1. for file in $direktoria, когато direktoria е "" е на практика празен цикъл

2. < се ползва за пренасочване на входа на команда

3. за сравнение се ползват -eq, -ne, -gt, -lt, etc. за дати/часове обаче надали ще сработят


Титла: проверка за по-нови файлове от скрипт?
Публикувано от: Nikolavp в Nov 13, 2007, 16:55
Цитат (Hapkoc @ Ноември 13 2007,17:44)
Nikolavp, не се обиждай, но скрипта ти е съвсем грешен :)

Оставям настрана признанието ти, че не е красив:

1. for file in $direktoria, когато direktoria е "" е на практика празен цикъл

2. < се ползва за пренасочване на входа на команда

3. за сравнение се ползват -eq, -ne, -gt, -lt, etc. за дати/часове обаче надали ще сработят

1. Оставих го празно, той да си го попълни :)
2. < се ползва на принципа на -lt само че ограден в [[]] работи
3. Да работи :)


Титла: проверка за по-нови файлове от скрипт?
Публикувано от: Hapkoc в Nov 13, 2007, 17:20
Брях :)

Извинявам се благопочтително. Благодаря за информацията, нещо ново да науча ми е приятно.


Титла: проверка за по-нови файлове от скрипт?
Публикувано от: mars в Nov 13, 2007, 17:52
Цитат (VladSun @ Ноември 13 2007,17:24)
man find

по-специално:

--newer и --exec параметрите

find би ми свършило чудесна работа. Нещо като:
find -cmin -<някаква вярна стойност за минути> . Само имам проблем да проверя в изхода дали има поне един файл. Как може да стане това?
Между другото винаги в резултата има поне <.> директорията а това не е което ми трябва.


Титла: проверка за по-нови файлове от скрипт?
Публикувано от: Nikolavp в Nov 13, 2007, 18:12
Цитат (mars @ Ноември 13 2007,18:52)
Цитат на: VladSun,Ноември 13 2007,17:24
man find

по-специално:

--newer и --exec параметрите

find би ми свършило чудесна работа. Нещо като:
find -cmin -<някаква вярна стойност за минути> . Само имам проблем да проверя в изхода дали има поне един файл. Как може да стане това?
Между другото винаги в резултата има поне <.> директорията а това не е което ми трябва.
Примерен код

directory="път/до/директорията/"

if [[ find $directory -cmin -<някаква вярна стойност за минути> != "" ]];then
     echo "You have a newer file"
fi

Забележка: Пътя до файла трябва да е нещо от рода на /home/files или иначе казано пълен път, защото ако скрипта ти е в /home и сложиш път files/ мисля, че пак ще ти изкара директорията, ако намери съответствие(по - сигурно е да е пълен пътя, когато ползваш find)