переименуйте файлы в папке в режиме реального времени

Существует ли способ переименовать файлы в папке, поскольку они создаются?

Я мог выполнить задание крона каждые несколько секунд, чтобы сделать что-то как...

find . -name "file.*" -exec sh -c 'echo mv "$1" "$(echo "$1" | sed s/file.*\$/"file-$(date).*"/)"' _ {} \;

но это кажется действительно громоздким, мудрым циклом...

3
задан 23 August 2012 в 03:53

2 ответа

Существует платформа в Linux, названном inotify, который позволяет программе регистрировать обработчик, который назовут каждый раз, когда файл или каталог изменяются, поэтому если Вы пишете программу C, можно просто использовать это. Очевидно, Ваша программа должна будет работать, когда изменение произойдет.

существует специальный демон, позвонивший incron, который похож "на крон для inotify" и может запустить скрипты, когда файл/каталог изменяется. Это может быть установлено с sudo apt-get install incron, затем Вы должны будете добавить несколько строк к его конфигурационному файлу.

Вот полезная статья: Linux incrond inotify: Каталоги Монитора Для Изменений И Принимают меры

, Если Вы будете искать синаптический "inotify", то Вы найдете намного больше библиотек и программ со схожей функциональностью.

5
ответ дан 21 October 2019 в 12:52

Так, с помощью incron, я настроил его путем выполнения sudo apt-get install incron.

Моя цель: Позвольте электронным письмам с вложениями изображения, отправленными в псевдоним (приложение sendtodropbox.com) быть автоматически скопированными в фото репозиторий моего блога для регистрации.

Затем я создал простой сценарий удара:

#!/bin/bash
ls photo.JPG | while read a; do mv $a "$(echo "$a" | sed s/photo.JPG/"photo$(date +%a%b%d%H%M).jpg"/)"; done
mv photo* ~/Dropbox/Attachments /<photo repo>/

Я помещаю сценарий в ~/, затем отредактируйте /etc/incron.allow файл для включения моего имени пользователя, потому что эти сценарии и файлы - все в моем домашнем dir Затем, что я должен отредактировать incron файл конфигурации путем выполнения incrontab -e.

В здесь я использовал ~/Dropbox/Attachments/ IN_MOVED_TO ~/script.sh (Я использовал IN_MOVED_TO, потому что действие Dropbox, помещающего файл в папку Dropbox, считают перемещением),

Это работает мгновенно, когда я посылаю моему Dropbox по электронной почте изображение со своего телефона теперь. Я также протестировал incron и с корнем и с моим именем пользователя, чтобы удостовериться, что это работало, мой первый тест, как мой пользователь был: incrontab -e добавьте конфигурацию: ~/ IN_CREATE touch ~/test, Я затем перехожу в ~/, и выполненный >foo, и test появляется.

1
ответ дан 21 October 2019 в 12:52

Другие вопросы по тегам:

Похожие вопросы: