Est-il possible de renommer automatiquement un fichier lorsqu'il est placé dans un répertoire spécifique?
Par exemple, j'ai un répertoire nommé "dir0" .Je déplace ou copie un fichier nommé "file1" dans "dir0".
linux
filesystems
Nick.h
la source
la source
Réponses:
Habituellement, vous le feriez par programmation au moment où vous créez ou déplacez le fichier, mais il est possible de déclencher un script chaque fois qu'un fichier est créé ou déplacé vers un dossier à l'aide
incron
. Configurez votre fichier tab en utilisantincrontab -e
une ligne comme celle-ci, mais avec vos chemins bien sûr:Puis en
/path/to/script
écrivant une action de renommage rapide. Sachez que le script sera également appelé pour le nouveau fichier que vous créez, il doit donc tester si le fichier a déjà été correctement nommé ou non. Dans cet exemple, il vérifie si le fichier a un nombre à dix chiffres pendant secondes de epoch comme dernière partie du nom de fichier, et si ce n'est pas le cas, il l'ajoute:Edit: Quand j'ai écrit ceci pour la première fois, je manquais de temps et je ne pouvais pas comprendre comment faire
bash
la correspondance des motifs ici. Gilles a expliqué comment faire cela sans invoquer grep en utilisant la correspondance ERE dans bash:la source
Je pense que
inotify
c'est l'outil qui pourrait être utilisé dans ce cas. Dans Debian, il existe un outilinoticoming
pour exécuter une action sur la création de fichiers:{}
sera remplacé par le nom de fichier.La commande que j'ai fournie n'est pas complète - elle provoque une boucle car lorsque le fichier sera renommé, il sera reconnu comme nouveau, il sera donc à nouveau
mv
édité, etc. Pour éviter cela, vous pouvez utiliser l'--suffix
option si vous savez quel suffixe sera dans le fichier avant de le renommer.la source
inoticoming
. Par curiosité, quand serait-il préférable de l'utiliser à nouveauinocron
?inoticoming
est "similaireincrond
, mais plus légère et qui n'a pas commencé comme démon par défaut", donc je pense que c'est juste une autre solution avec une approche légèrement différente. .. Je pense queincron
c'est plus populaire - j'ai peu de mal à trouver un paquet pour lainoticoming
page d'accueil en dehors de Debian ...inoticoming
que dans les distributions basées sur Debian (dans mon Gentoo il n'y a pas d'ebuild pour ça). Sur la page que j'ai publiée, il y a deux packages:reprepro
et en dessousinoticoming
...Vous pouvez simplement prendre un script comme celui-ci et le faire tourner ... Je vais laisser au lecteur un exercice pour ajouter les bits supplémentaires afin qu'il démarre en tant que service et empêcher l'exécution de plusieurs copies à la fois.
Et ça marche:
la source
perl
peut être fait, mais un script persistant qui s'exécute sur une boucle X-seconde while-true est définitivement un hack lorsque vous pouvez recevoir des notifications d'événements sur les écritures de fichiers et répondre instantanément sans gaspiller les ressources le reste du temps.