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 повний шлях.