1. ваш скрипт переместил все файлы в наблюдаемой папке в папку назначения, а не только указаное мной рсширение, плюс переместил активный на запись файл... 
2. и вот после того как очередной файл txt закончится писаться, его нужно переместить в другую папку
3. Только вот как сделать так, чтобы IN_CLOSE_WRITE следило только за закрытием файлов с одним определённым расширением?
4. Просто если сделать запись в любой файл, находящийся в наблюдаемой папке, то сразу выполняется скрипт и перемещает все файлы с указынным в нём расширением, включая тот, что ещё записывается... 
1. У меня мой скрипт перемещает только те файлы, расширения которых в нем указаны. Вероятно вы его так отредактировали, что он у вас все файлы перемещает. Другого объяснения у меня нет. Приведите свой вариант моего скрипта.
2. Разные программы создают файлы по разному. Я вижу три варианта:
2.1 Прога создает файл, скажем
~/Downloads/big1213.txt и пишет в него до опупения, а потом закрывает
2.2 Прога создает файл, скажем
/tmp/big1213.txt и пишет в него до опупения, а потом закрывает, а потом переносит в
~/Downloads/big1213.txt2.3 Прога создает файл, скажем
~/Downloads/big1213.txt.part и пишет в него до опупения, а потом закрывает, а потом переименовывает в
~/Downloads/big1213.txtЭти способы отличаются генерируемыми событиями:
2.1 IN_CLOSE_WRITE на файл ~/Downloads/big1213.txt
2.2 IN_MOVED_TO на файл ~/Downloads/big1213.txt
2.3 IN_CLOSE_WRITE, IN_MODIFY на файл ~/Downloads/big1213.txt.partПоэтому, чтобы разобраться надо знать, как именно прога создает файл. Судя по вашему описанию увас прога работает по варианту 2.1 Тогда у вас должен отработать другой скрипт, который принимает имя файла от incrontab, а не шерстит весь каталог. Я первым написал именно такой вариант, но он у меня не сработал, т.к. у меня файлы создаются по варианту 2.3. Если вы укажите что за программа создает у вас *.txt, я попробую изменить скрипт.
3. Получать от системы IN_CLOSE_WRITE толко для *.txt невозможно.
4. Тогда вам нужен скрипт, который получает имя файла и работает только с одни файлом. Это сделать можно, но нужно точно знать как создается файл.
зы
и расширение нужно только txt?
Пользователь решил продолжить мысль 22 Октября 2011, 09:19:10:
Скрипт только для txt по варианту 2.1
dst_dir=$1
filename=$2
subfolder=""
sleep 1
if [[ -f $filename ]]; then # regular file only
{
case "${filename,,*}" in
*.txt) subfolder="books" ;;
*) echo "Unknown file extension, don't know where to put $filename";;
esac
if [ -z "$subfolder" ]; then
echo "subfolder is unknown"
else
mv "$filename" "$dst_dir/$subfolder"
echo "$filename moved"
fi
}
else
{
echo "skipping $filename"
}
fi
в инкронтаб поместить такую команду:
/наблюдаемый/каталог IN_CLOSE_WRITE /путь/к/скрипту /каталог/назначения $@/$#в каталоге назначения должен быть подкаталог
books