Сценарий оболочки - Поиск по всем файлам? - PullRequest
2 голосов
/ 21 ноября 2011

Я пытаюсь написать сценарий оболочки, который будет искать имя файла (заданное в качестве аргумента) и, если файл был изменен меньше или равным 10 минутам назад, выйти из 0, если он был изменен более чем за 10 минутназад, выход 1, а если файл не существует, выход 2.

Вот мой код:

if find $1
then
        if find $1 -mmin -11
        then
                echo "Exit 0"
        else
                echo "Exit 1"
        fi
else
        echo "Exit 2"
fi

Как мне выполнить поиск по ВСЕМ файлам в системе?

Кроме того, если файл существует, проверьте, не был ли он изменен в течение последних 10 минут, если это был выход 1. Если файл не существует, завершите 2. Я использовал echo "", чтобы я мог видетькакой выход происходит.

Ответы [ 2 ]

1 голос
/ 21 ноября 2011
if [[ -n $1 ]]; then 
  find / -name $1 -mmtime -10 2>/dev/null
  if [[ $? == 0 ]]; then 
    exit 0
  else
    exit 1
  fi
else
 ... 
0 голосов
/ 21 ноября 2011

Что вы хотите сделать, если в файловой системе найдено два файла с таким именем?(На данный момент я предполагаю, что это не проблема, а работа только с первым найденным файлом.) Ваш вопрос противоречит сам себе: в преамбуле вы говорите, что хотите выйти с 0, если он был изменен за последние 10 минут, но позже вы говорите, что недавняя модификация должна вызвать выход 1. Следующее решение возвращает 0 файла, который НЕ был изменен за последние 10 минут.Для этого требуется расширение gnu до даты, которая дает спецификатор формата% s.

#!/bin/sh

fullpath=$( find / -name ${1?No file specified} | sed 1q | grep . ) || exit 2
test $( expr $( date +%s ) - $( stat -c %Y $fullpath )) -gt 600
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...