Renommer plusieurs fichiers selon leurs noms
youhansen
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai des fichiers avec des noms sous la forme :
toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log, toto.tokyo.fcvhzegfdgdfbzeyui.02-08-2008.16-23-49.log ...
j'ai un problème de tri puisque j'ai plusieurs mois de log : par exemple, le fichier avec 01-09-2008 est affiché avant celui avec 25-08-2008 ... (01 étant inférieur à 25)
Pour avoir le bon tri, je les ai renommer de cette façon :
[2008-08-01].toto.dsfqsbtiutdfsqmjfdsqf.01-08-2008.22-45-36.log ...
mais j'ai besoin maintenant d'ajouter même l'heure en début pour avoir :
[2008-08-01].[22-45-36].toto.dsfqsbtiutdfsqmjfdsqf.01-08-2008.22-45-36.log ...
MERCI les amis. ;-)
j'ai des fichiers avec des noms sous la forme :
toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log, toto.tokyo.fcvhzegfdgdfbzeyui.02-08-2008.16-23-49.log ...
j'ai un problème de tri puisque j'ai plusieurs mois de log : par exemple, le fichier avec 01-09-2008 est affiché avant celui avec 25-08-2008 ... (01 étant inférieur à 25)
Pour avoir le bon tri, je les ai renommer de cette façon :
[2008-08-01].toto.dsfqsbtiutdfsqmjfdsqf.01-08-2008.22-45-36.log ...
mais j'ai besoin maintenant d'ajouter même l'heure en début pour avoir :
[2008-08-01].[22-45-36].toto.dsfqsbtiutdfsqmjfdsqf.01-08-2008.22-45-36.log ...
MERCI les amis. ;-)
A voir également:
- Renommer plusieurs fichiers selon leurs noms
- Renommer plusieurs fichiers en même temps - Guide
- Renommer iphone - Guide
- Comment renommer quelqu'un sur instagram - Guide
- Fichiers epub - Guide
- Les noms des animaux - Télécharger - Études & Formations
5 réponses
Bonsoir,
Je pense qu'il te faudrait revoir la façon dont tu renommes tes fichiers, enfin c'est mon point de vue. Sinon pour répondre plus concrètement à ta question tu peux faire un truc comme cela en utilisant la commande date:
_DATE=$(date("+%d-%m-%Y "))
_HEURE=$(date("+%H:%M"))
for i in $( ls /chemin/répertoire/contenant/fichier)
do
mv $i $_DATE.$_HEURE.$i
done
normalement ca devrait marcher.
Je pense qu'il te faudrait revoir la façon dont tu renommes tes fichiers, enfin c'est mon point de vue. Sinon pour répondre plus concrètement à ta question tu peux faire un truc comme cela en utilisant la commande date:
_DATE=$(date("+%d-%m-%Y "))
_HEURE=$(date("+%H:%M"))
for i in $( ls /chemin/répertoire/contenant/fichier)
do
mv $i $_DATE.$_HEURE.$i
done
normalement ca devrait marcher.
bonsoir,
Merci MyTux. Désolé si je me suis mal exprimé.
Les fichiers ne m'appartiennent pas. Ils sont crées automatiquement et quotidiennement par d'autres programmes et je les utilise pour faire des recherches dans leurs contenus. Donc, je dois les ordonner par la date qui est incluse dans le nom: toto.xyz.jj-mm-aaaa.hh-mm-ss.log.
en utilisant un boucle FOR (de 01 à 31), j'ai pu les recopier dans mon propre répertoire en insérant la date (incluse dans le nom et non la date d'aujourd'hui) au début du nom et je veux y ajouter l'heure aussi.
Je pense que maintenant, cela est plus claire.
MERCI
Merci MyTux. Désolé si je me suis mal exprimé.
Les fichiers ne m'appartiennent pas. Ils sont crées automatiquement et quotidiennement par d'autres programmes et je les utilise pour faire des recherches dans leurs contenus. Donc, je dois les ordonner par la date qui est incluse dans le nom: toto.xyz.jj-mm-aaaa.hh-mm-ss.log.
en utilisant un boucle FOR (de 01 à 31), j'ai pu les recopier dans mon propre répertoire en insérant la date (incluse dans le nom et non la date d'aujourd'hui) au début du nom et je veux y ajouter l'heure aussi.
Je pense que maintenant, cela est plus claire.
MERCI
Salut,
Une idée parmi d'autres...
Regarde aussi du côté de la commande "sort", tu dois pouvoir faire un tri sur le champ de la date si toutefois le nombre de champs dans le nom des fichiers ne varie pas ;-\
Une idée parmi d'autres...
$ var="toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log" $ echo "$var" | sed 's/\([^0-9-]*\)\([^.]*\).\([^.]*\).\(.*\)/[\2].[\3].\1\2.\3.\4/' [01-08-2008].[22-45-36].toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log $A combiner avec une boucle et la commande "mv" ou "rename".
Regarde aussi du côté de la commande "sort", tu dois pouvoir faire un tri sur le champ de la date si toutefois le nombre de champs dans le nom des fichiers ne varie pas ;-\
Salut,
pourquoi rennommer?!
on peut faire le tri directement sur plusieurs critéres
donc le tri se fera par date, heure, nom
voici un exemple de tri sur plusieurs critères en Perl
http://www.commentcamarche.net/forum/affich 3775140 tri des lignes d un fichier
pourquoi rennommer?!
on peut faire le tri directement sur plusieurs critéres
donc le tri se fera par date, heure, nom
voici un exemple de tri sur plusieurs critères en Perl
http://www.commentcamarche.net/forum/affich 3775140 tri des lignes d un fichier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tiens avec "sort" en supposant que le nombre de champs ne varie pas et en ne tenant pas compte de l'année (au cas ou il faudrait rajouter une option à la commande) :
$ ls -1 toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log toto.paris.fksdjfdvbdn.25-08-2008.22-45-36.log toto.tokyo.fksdjfdvbdn.05-07-2008.22-45-36.log toto.tokyo.fksdjfdvbdn.05-08-2008.22-45-36.log $ ls -1 | sort -n -t . -k 4.4,4.5 -k 4,4 toto.tokyo.fksdjfdvbdn.05-07-2008.22-45-36.log toto.paris.fksdjfdvbdn.01-08-2008.22-45-36.log toto.tokyo.fksdjfdvbdn.05-08-2008.22-45-36.log toto.paris.fksdjfdvbdn.25-08-2008.22-45-36.log $;-))