Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 14/02/2010, à 19:47

Link_Octree

[SHELL] Renommer des fichiers automatiquement en ligne de commande

Salut à tous smile

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, à 20: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, à 21: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, à 22:13

Link_Octree

Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande

Merci à vous deux smile
Je suis en train de regarder çà smile

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 big_smile

Hors ligne

#5 Le 15/02/2010, à 00:33

AnsuzPeorth

Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande

Link_Octree a écrit :

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 wink)

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, à 10:22

Link_Octree

Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande

Merci du conseil smile

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 big_smile
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, à 17: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


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#8 Le 27/10/2013, à 12: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, à 13: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.


eval, c'est mal.

Hors ligne

#10 Le 27/10/2013, à 14: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, à 15: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!


eval, c'est mal.

Hors ligne

#12 Le 27/10/2013, à 15:39

DCUPLE

Re : [SHELL] Renommer des fichiers automatiquement en ligne de commande

merci beaucoup big_smile
(je maîtrise mal l'anglais)


L'Entraide, un facteur de l'évolution. MERCI

Hors ligne

Haut de page ↑