Shell-скрипт із умовою перевірки наявності файлів для Linux

перевірки

Shell-скрипт із умовою перевірки наявності файлу для Linux/FreeBSD

Наведу вам скрипт, який архівує файл, якщо він є в заданій директорії. Якщо файлу немає – архів не створюється.

Інші ключі перевірки файлів/каталогів:

Другий варіант bash-скрипту для перевірки умови існування файлів та їх архівування за наявності:

Третій варіант перевірки умови існування будь-яких файлів у каталозі:

#Задаємо змінну директорії DIR=/000/test/test

#обчислюємо кількість файлів, які є в заданій директорії filecount=`find $DIR -type f wc -l`

#якщо кількість файлів дорівнює нулю, тобто їх немає, видається повідомлення if [ $filecount -eq 0 ]; then echo "Файлів немає, виконуємо скрипт далі" else echo "Є файли, припиняємо роботу скрипта" && exit fi

Четвертий варіант перевірки умови існування будь-яких файлів у каталозі з нескінченним циклом:

while true do case `find $DIR -type f wc -l` in 0) echo "no file";; #Якщо файлів немає - виводиться повідомлення (або можна підставити будь-який ваш скрипт або команду) * ) sleep 5;; #якщо файли в каталозі є - чекаємо 5 секунд і далі перевіряємо по-новому (до першого кроку) esac done exit 0

Схожі записи:

8 thoughts on “ Shell-скрипт з умовою перевірки наявності файлу для Linux/FreeBSD ”

Підкажіть, а як виглядатиме скрипт, який не дасть подальшого виконання основного скрипту, поки в зазначеному каталозі присутні файли (будь-які), з будь-яким ім'ям та розширенням?

Олексію, я додав до статті варіант під вашу потребу. Чи піде?

Третій варіант, я думаю, теж візьму на замітку, але якщо можнаПокажіть приклад, у якому був як я розумію нескінченний цикл перевірки на наявність файлів.

Тобто майже як третій варіант, тільки якщо файли є, то робота скрипта не припинялася взагалі, а допустимо був би sleep 5 і після нього перевірка повторювалася і так доти, поки каталог не буде порожнім і тільки тоді піде виконання скрипту далі.

Четвертий варіант піде? Я перевірив – працює так, як вам потрібно, якщо я правильно зрозумів.

Те що треба! Дякую

Не можу зрозуміти, чи пишу це на роутері. Під sh виконується все коректно find $DIR -type f wc -l, а коли сам роутер виконує цю команду, то чомусь вона весь час пише нуль файлів у каталозі, хоча вони там є.

Якщо бути точнішим, то пишу скрипт:

filecount=`find /opt/var/spool/sms/failed/ -type f wc -l` echo -e $filecount >> /tmp/status

якщо цей скрипт виконати під ssh, то все ок, а якщо його виконує cron, весь час отримую нуль.

Начебто розібрався, вказав до команди find повний шлях.