#1 Le 14/02/2010, à 18:47
- Link_Octree
[SHELL] Renommer des fichiers automatiquement en ligne de commande
Salut à tous
Je commence depuis une quinzaine de minutes à m'intéresser au langage de script shell.
Je voudrais dans un premier temps via mon script shell être capable de renommer tous les fichiers se trouvant dans le dossier courant (je sais pas ce qui est possible et ce qui ne l'est pas, mais par exemple en fonction de l'heure de création du fichier, ou bien de sa taille, ou bien aléatoirement par exemple ^^)
Le problème est que je ne sais pas comment faire celà, quelle commande utiliser :S
Quelqu'un a-t-il déja fait çà ?
Hors ligne
#2 Le 14/02/2010, à 19:03
- bennyboy
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Salut,
un truc dans le genre devrait fonctionner:
list=`ls`
for $i in $list
do
mv $i $i.bak
done
T'es tellement no-life que t'aimerais être un PC pour redémarrer ta vie en mode sans échec !
"Ubuntu" - an African word meaning "Gentoo is too hard for me".
Un wiki inutile (ou presque)
Un github inutile (ou presque)
Hors ligne
#3 Le 14/02/2010, à 20:56
- francoisp31
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
un exemple simple sans script pour renomer les fichier de vieux que 7jours :
find ~/ -type f -mtime +7 -exec mv {} {}.old \;
un exemple pour inserer la date dans le nom de fichiers
for i in $(ls ~/ ) ; do mv $i $i$(date +%Y%m%d-%H%M) ; done
inserer une date dans un nom de fichier en gardant son extension :
mv titi.txt $(echo titi.txt | sed "s/\./"$(date +%Y%m%d)"\./")
Que les puces d'un millier de chiens galleux infeste le cul de celui qui osera vous gacher ne serai ce
qu'une seule journée de votre vie et que les bras lui soient trop court pour qu'il puisse se le gratter.
Hors ligne
#4 Le 14/02/2010, à 21:13
- Link_Octree
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Merci à vous deux
Je suis en train de regarder çà
Est-il possible de renommer un fichier fraichement récupéré par wget
Exemple
wget http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz
[renommer ce fichier de suite après son téléchargement en flash_player_[date_actuelle]]
Voilà, merci de votre aide, je suis encore un gros noob en shell, mais çà me semble très intéréssant
Hors ligne
#5 Le 14/02/2010, à 23:33
- AnsuzPeorth
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Est-il possible de renommer un fichier fraichement récupéré par wget
wget possède un option pour ! man wget en console.
Pour la date, man date
au final, ca te donnera un truc du genre (je te donne l'option wget, (Le man fait un peu peur au début )
wget add.tar.gz -O flash_$(cmd_date).tar.gz
Sinon, pour renommer, il existe la commande rename
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#6 Le 15/02/2010, à 09:22
- Link_Octree
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Merci du conseil
En lisant le man, j'ai vu que wget avait la possibilité de DL une liste de fichier (-i adresse.txt) et cette fonction m'intéresse bien
Du coup si je DL 2/3 fichiers à la suite, l'option -O ne semble plus convenir.
Une fois les téléchargements finis, j'ai donc fait une compteur qui renomme mes fichiers sous la forme "fichier_n"
Le seul problème que je rencontre actuellement est que celà perd l'extension du fichier en le renommant.
mv $FILE fichier_${NUM_FILE}
L'un d'entre vous à posté un code que je pourrai adapter, mais je refuse de pomper çà sans le comprendre.
Il existe une méthode plus simple pour renommer en gardant l'extension ?
Hors ligne
#7 Le 15/02/2010, à 16:19
- sputnick
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Link_Octree
merci de ne pas crossposter, d'aileurs la réponse que je t'ai donné est propre, pas comme certaines qu'on voit ici.
http://forum.kubuntu-fr.org/viewtopic.php?pid=3281051#p3281051
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver. Jacques Prévert
https://sputnick.fr
Hors ligne
#8 Le 27/10/2013, à 11:39
- DCUPLE
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Bonjour,
la commande suivante fonctionne bien, mais pas dans crontab :
mv titi.txt $(echo titi.txt | sed "s/\./"$(date +%Y%m%d)"\./")
En mettant le chemin absolu non plus. Il s'agit peut-être du caractère "/" qui pose problème.
Une piste peut-être ici : http://www.unix.com/showthread.php?t=237707
Une idée pour intégrer cette commande bien utile dans cron ? Je suis bloqué.
Merci
L'Entraide, un facteur de l'évolution. MERCI
Hors ligne
#9 Le 27/10/2013, à 12:03
- Watael
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
salut,
c'est les % qui posent problème : ce caractère est transformé en retour chariot par cron (cf. man 5 crontab).
=> il faut les protéger.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 27/10/2013, à 13:59
- DCUPLE
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
Salut Watael,
Merci pour ta réponse.
J'ai essayé de protéger ces caractères en plaçant des guillemets de différentes façons pour les protéger mais sans succès.
dans le terminal cela fonctionne :
mv /home/user/motion.tar.xz $(echo /home/user/backup/motion_sauv_du_.tar.xz | sed "s/\./"$(date '+%Y%m%d')"\./")
(déplace le fichier 'motion.tar.xz' en le renommant 'motion_sauv_du_20131027-0208.tar.xz')
dans cron : pas de résultat...
30 13 * * * mv /home/user/motion.tar.xz $(echo /home/user/backup/motion_sauv_du_.tar.xz | sed "s/\./"$(date '+%Y%m%d')"\./")
L'Entraide, un facteur de l'évolution. MERCI
Hors ligne
#11 Le 27/10/2013, à 14:23
- Watael
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
mv titi.txt "$(echo "titi.txt" | sed "s/\./$(date +\%Y\%m\%d)\./")"
tu n'as pas lu le man 5 crontab!
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 27/10/2013, à 14:39
- DCUPLE
Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande
merci beaucoup
(je maîtrise mal l'anglais)
L'Entraide, un facteur de l'évolution. MERCI
Hors ligne