LINUX.ORG.RU

[bash] сканировать каталог на появление новых файлов

 


0

1

Здравствуйте, появилась необходимость сканировать каталог на появление новых файлов. Уперся в незнание bash'a, может кто нибудь поможет с написанием скрипта. Необходимо просмотреть определенный каталог и если в нем появились новые файлы сделать на него симлинк. У самого получилось только делать симлин на все файлы в каталоге(не только на новые, но и на старые)

Сам скрипт я так понимаю можно будет прописать в кроне и запускать по расписанию.


Ответ на: комментарий от post-factum

Например, так. В одной консоли набираю

inotifywait ~/

В другой делаю

touch ~/a

В первой получаю

/home/pf/ CREATE a

Дальше сам.

post-factum ★★★★★
()
Ответ на: комментарий от Zhbert

> А как ты определеяешь новые файлы? И что является показателем новизны файла?

А ну вот в этом и проблема. Вообще новый файл этот файл на который нету симлинка в output каталоге.

nec117
() автор топика
Ответ на: комментарий от Zhbert

Иногда попадаются твои ответы - ты по правде такой тугой, или прикидываешься? Например на момент времени A были файлы Б1, Б2, Б3. На момент времени В файлы Б1, Б2, Б3, Б4 - и что есть новый файл? Что является показателем новизны файла?

xscrew ★★
()
Ответ на: комментарий от xscrew

На момент времени А есть файлы Б1 Б2 Б3 делает на них симлинк в каталог output (output/Б1, output/Б2, output/Б3).

На момент времени В в исходном каталоге лежат файлы Б1, Б2, Б3, Б4 на первый три файла в каталоге output уже есть симлинки, значит надо сделать симлин на все оставшиеся файлы т.е. на Б4.

Как написать это на bash'e не знаю.

nec117
() автор топика
Ответ на: комментарий от xscrew

>ты по правде такой тугой, или прикидываешься?

Я стараюсь не мыслить по общепринятым шаблонам. Кто его знает, как он определяет «новизну» файла? Может он не тупо сравнивает, что появилось со времени проверки, а каким-то неведомым образом сравнивает даты создания файлов или еще какую муть. Тогда был бы смысл подсказать более очевидное и просто решение. ЧЯДНТ?

Zhbert ★★★★★
()
Ответ на: комментарий от Pinkbyte

кури в сторону inotify

Курить вредно, он же сказал что новизна определяется разницей в списке файлов/линков. Тут обязательно нужен grep, без него никак

zolden ★★★★★
()

nec117> У самого получилось только делать симлин на все файлы в каталоге(не только на новые, но и на старые)

Ну и делай. Имеющиеся линки дадут ошибку (2>/dev/null тебе поможет), а новые появятся.

sdio ★★★★★
()

Вроде-бы, inotify в ядре может быть не всегда включен. Да и linux-only, непортабельное решение получится.

По простому я бы сделал ls -1 два раза и с помощью diff разбирать вывод.

TuxR ★★★★
()
Ответ на: комментарий от Zhbert

> Я стараюсь не мыслить по общепринятым шаблонам.

Специально для таких альтернативно одарённых как ты в ядро давно введены механизмы нотификации и есть специальные средства для работы с ними. Посмотри выше, постфактум привёл пример.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

Я видел, но я поинтересовался первее постфактума. Мало ли чего там есть в ядре, ТС может мыслить не так и лепить свой велосипед, так что мой вопрос вполне себе адекватен. Что не так-то?

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Не так здесь именно велосипедостроение.

Lumi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.