déplacer des fichiers à partir d'une certaine date
20 réponses
fabrice régnier
Salut la liste ;)
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer
des fichiers d'un répertoire vers un autre en fonction de la date de
création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer
des fichiers d'un répertoire vers un autre en fonction de la date de
création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers
titi/
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY.
Dam
Pourquoi aurais-je tout faux?? Explique toi au lieu de dire ça bétement. Chez moi en tout cas cela marche (testé). Tu veux peut-être parler du find car effectivement j'ai mis "/;" au lieu de ";" mais même dans ce cas, dire que c'est tout faux est exagéré.
Pourquoi aurais-je tout faux?? Explique toi au lieu de dire ça
bétement.
Chez moi en tout cas cela marche (testé).
Tu veux peut-être parler du find car effectivement j'ai mis "/;" au
lieu de ";" mais même dans ce cas, dire que c'est tout faux est
exagéré.
Pourquoi aurais-je tout faux?? Explique toi au lieu de dire ça bétement. Chez moi en tout cas cela marche (testé). Tu veux peut-être parler du find car effectivement j'ai mis "/;" au lieu de ";" mais même dans ce cas, dire que c'est tout faux est exagéré.
Pascal Bourguignon
fabrice régnier writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Il faudrait modifier les programmes qui créent ces fichiers pour qu'ils enregistrent la date de création d'une manière ou d'une autre.
Si on les modifie pour qu'ils mettent la date dans un entête du fichier, on peut écrire dans la foulée un petit utilitaire pour la lire:
$ pgm -create fichier $ pgm-creation-date fichier 2005-08-24 15:47:38 fichier alors on peut faire: $ pgm-creation-date toto/* | sort -r | sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//' | xargs mv {} titi/
Une autre façon de faire, c'est d'ajouter la date de création dans les noms des fichiers. Ça marche avec tous les programmes qui permettent à l'utilisateur de spécifier le nom des fichiers:
$ pgm -create $(date '+%Y%m%d-%H%M%S')-fichier
alors il est simple de faire:
$ ls -1 toto/* | sort -r | sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//' | xargs mv {} titi/
Une autre solution serait de modifier les file systems (sources du noyaux), pour ajouter la date de création. Mais il faut se poser la question de la signification d'une date de création quand on copie les fichiers. Veut-on la date de la copie ou la date de l'original? Peut être faudrait-il garder les deux. Donc on a besoin de 16 octets de plus dans l'inode... (deux dates sur 64-bit).
Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY.
fabrice régnier <regnier.fab@free.fr> writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir
déplacer des fichiers d'un répertoire vers un autre en fonction de la
date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers!
man 2 stat
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
^^^^^^
CHANGE, pas création!
Il faudrait modifier les programmes qui créent ces fichiers pour
qu'ils enregistrent la date de création d'une manière ou d'une autre.
Si on les modifie pour qu'ils mettent la date dans un entête du
fichier, on peut écrire dans la foulée un petit utilitaire pour la
lire:
$ pgm -create fichier
$ pgm-creation-date fichier
2005-08-24 15:47:38 fichier
alors on peut faire:
$ pgm-creation-date toto/*
| sort -r
| sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//'
| xargs mv {} titi/
Une autre façon de faire, c'est d'ajouter la date de création dans les
noms des fichiers. Ça marche avec tous les programmes qui permettent à
l'utilisateur de spécifier le nom des fichiers:
$ pgm -create $(date '+%Y%m%d-%H%M%S')-fichier
alors il est simple de faire:
$ ls -1 toto/*
| sort -r
| sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//'
| xargs mv {} titi/
Une autre solution serait de modifier les file systems (sources du
noyaux), pour ajouter la date de création. Mais il faut se poser la
question de la signification d'une date de création quand on copie les
fichiers. Veut-on la date de la copie ou la date de l'original? Peut
être faudrait-il garder les deux. Donc on a besoin de 16 octets de
plus dans l'inode... (deux dates sur 64-bit).
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Il faudrait modifier les programmes qui créent ces fichiers pour qu'ils enregistrent la date de création d'une manière ou d'une autre.
Si on les modifie pour qu'ils mettent la date dans un entête du fichier, on peut écrire dans la foulée un petit utilitaire pour la lire:
$ pgm -create fichier $ pgm-creation-date fichier 2005-08-24 15:47:38 fichier alors on peut faire: $ pgm-creation-date toto/* | sort -r | sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//' | xargs mv {} titi/
Une autre façon de faire, c'est d'ajouter la date de création dans les noms des fichiers. Ça marche avec tous les programmes qui permettent à l'utilisateur de spécifier le nom des fichiers:
$ pgm -create $(date '+%Y%m%d-%H%M%S')-fichier
alors il est simple de faire:
$ ls -1 toto/* | sort -r | sed '/2005-08-15/,$d' -e 's/^([^ ]* ){2}//' | xargs mv {} titi/
Une autre solution serait de modifier les file systems (sources du noyaux), pour ajouter la date de création. Mais il faut se poser la question de la signification d'une date de création quand on copie les fichiers. Veut-on la date de la copie ou la date de l'original? Peut être faudrait-il garder les deux. Donc on a besoin de 16 octets de plus dans l'inode... (deux dates sur 64-bit).
Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY.
Dam
Ah oui, si c'est de ça que tu parlais je suis parfaitement d'accord avec toi... J'ai effectivement faire le rapprochement facile en confondant la date de création avec la date de dernière modification.
En tout cas, c'est plus sympa de donner des explications (merci d'ailleurs) plutot que de dire simplement "bouhh pas bien", ce n'est pas constructif.
Ah oui, si c'est de ça que tu parlais je suis parfaitement d'accord
avec toi...
J'ai effectivement faire le rapprochement facile en confondant la date
de création avec la date de dernière modification.
En tout cas, c'est plus sympa de donner des explications (merci
d'ailleurs) plutot que de dire simplement "bouhh pas bien", ce n'est
pas constructif.
Ah oui, si c'est de ça que tu parlais je suis parfaitement d'accord avec toi... J'ai effectivement faire le rapprochement facile en confondant la date de création avec la date de dernière modification.
En tout cas, c'est plus sympa de donner des explications (merci d'ailleurs) plutot que de dire simplement "bouhh pas bien", ce n'est pas constructif.
Jean-Louis Liagre
Pascal Bourguignon wrote:
fabrice régnier writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que c'est "tout faux".
Pascal Bourguignon wrote:
fabrice régnier <regnier.fab@free.fr> writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir
déplacer des fichiers d'un répertoire vers un autre en fonction de la
date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers!
man 2 stat
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
^^^^^^
CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est
demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que
c'est "tout faux".
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que c'est "tout faux".
Pascal Bourguignon
Jean-Louis Liagre writes:
Pascal Bourguignon wrote:
fabrice régnier writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/ Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers! man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que c'est "tout faux".
Seulement s'il se passe moins d'une seconde entre la création et la dernière modification... ;-)
-- __Pascal_Bourguignon__ _ Software patents are endangering () ASCII ribbon against html email (o_ the computer industry all around / 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/ 2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
Jean-Louis Liagre <root@localhost> writes:
Pascal Bourguignon wrote:
fabrice régnier <regnier.fab@free.fr> writes:
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir
déplacer des fichiers d'un répertoire vers un autre en fonction de la
date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/
Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers!
man 2 stat
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
^^^^^^
CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est
demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que
c'est "tout faux".
Seulement s'il se passe moins d'une seconde entre la création et la
dernière modification... ;-)
--
__Pascal_Bourguignon__ _ Software patents are endangering
() ASCII ribbon against html email (o_ the computer industry all around
/ 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/
2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
J'aimerai de façon élégante (pas un prog de 40 lignes) pouvoir déplacer des fichiers d'un répertoire vers un autre en fonction de la date de création des fichiers.
ex: déplacer tous les fichiers de toto/ crées après le 15/08/2005 vers titi/ Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers! man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Les scripts proposés remplissent parfaitement la tâche qui leur est demandée si les fichiers ne sont pas modifiés après leur création.
Dans ce cas le last change est bien la date de création.
C'est en effet une contrainte, mais elle ne suffit à affirmer que c'est "tout faux".
Seulement s'il se passe moins d'une seconde entre la création et la dernière modification... ;-)
-- __Pascal_Bourguignon__ _ Software patents are endangering () ASCII ribbon against html email (o_ the computer industry all around / 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/ 2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
Laurent Wacrenier
Pascal Bourguignon écrit:
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Sur FreeBSD (récent) : st_birthtime Time when the inode was created.
Mais aucun utilitaire ne s'en sert.
Pascal Bourguignon <spam@mouse-potato.com> écrit:
Ce n'est pas possible. (En tout cas, pas facilement).
Unix ne garde pas la date de création de ses fichiers!
man 2 stat
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
^^^^^^
CHANGE, pas création!
Sur FreeBSD (récent) :
st_birthtime Time when the inode was created.
Ce n'est pas possible. (En tout cas, pas facilement). Unix ne garde pas la date de création de ses fichiers!
man 2 stat time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last change */ ^^^^^^ CHANGE, pas création!
Sur FreeBSD (récent) : st_birthtime Time when the inode was created.