Автор Тема: проверка за по-нови файлове от скрипт?  (Прочетена 1004 пъти)

mars

  • Напреднали
  • *****
  • Публикации: 46
    • Профил
Целта ми е да мога в баш скрипт да направя:

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

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

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
проверка за по-нови файлове от скрипт?
« Отговор #1 -: Nov 13, 2007, 16:24 »
man find

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

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



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
проверка за по-нови файлове от скрипт?
« Отговор #2 -: 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 бъде проверен '<img'>. Може би има някоя опция на финд също...

Едит: Щом Vladsun казва значи има '<img'>



Активен

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
проверка за по-нови файлове от скрипт?
« Отговор #3 -: Nov 13, 2007, 16:44 »
Nikolavp, не се обиждай, но скрипта ти е съвсем грешен :)

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

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

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

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

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
проверка за по-нови файлове от скрипт?
« Отговор #4 -: Nov 13, 2007, 16:55 »
Цитат (Hapkoc @ Ноември 13 2007,17:44)
Nikolavp, не се обиждай, но скрипта ти е съвсем грешен '<img'>

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

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

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

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

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

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
проверка за по-нови файлове от скрипт?
« Отговор #5 -: Nov 13, 2007, 17:20 »
Брях :)

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

mars

  • Напреднали
  • *****
  • Публикации: 46
    • Профил
проверка за по-нови файлове от скрипт?
« Отговор #6 -: Nov 13, 2007, 17:52 »
Цитат (VladSun @ Ноември 13 2007,17:24)
man find

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

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

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

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
проверка за по-нови файлове от скрипт?
« Отговор #7 -: 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)



Активен

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време