In article <1ifb1js.qv3fph10wqr3cN%,
(Pierre-Olivier TAUBATY) wrote:Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
In article <1ifb1js.qv3fph10wqr3cN%pas.de.spam@chez.moi>,
pas.de.spam@chez.moi (Pierre-Olivier TAUBATY) wrote:
Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
In article <1ifb1js.qv3fph10wqr3cN%,
(Pierre-Olivier TAUBATY) wrote:Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
Eric Levenez wrote:Le 12/04/08 21:55, dans <480113ce$0$893$, « MartinEn bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Ceci suppose que tes noms de fichiers ne comportent pas de blancs
Oui, sinon effacement ou perte de données garantie ! Mais pourquoi donc
faire un script comme cela lors que mettre des guillemets est si facile ?
ta remarque a-'elle une incidence sur la mise en oeuvre de ce script ?
Où puis-je l'utiliser ?
Eric Levenez <usenet@levenez.com> wrote:
Le 12/04/08 21:55, dans <480113ce$0$893$ba4acef3@news.orange.fr>, « Martin
En bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Ceci suppose que tes noms de fichiers ne comportent pas de blancs
Oui, sinon effacement ou perte de données garantie ! Mais pourquoi donc
faire un script comme cela lors que mettre des guillemets est si facile ?
ta remarque a-'elle une incidence sur la mise en oeuvre de ce script ?
Où puis-je l'utiliser ?
Eric Levenez wrote:Le 12/04/08 21:55, dans <480113ce$0$893$, « MartinEn bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Ceci suppose que tes noms de fichiers ne comportent pas de blancs
Oui, sinon effacement ou perte de données garantie ! Mais pourquoi donc
faire un script comme cela lors que mettre des guillemets est si facile ?
ta remarque a-'elle une incidence sur la mise en oeuvre de ce script ?
Où puis-je l'utiliser ?
Pier-Ol : J'ai l'impression qu'il y a des mamouths qui risquent de
voler bas, mais bon, pour atteindre la Réunion, c'est pas gagné ;-)
Pier-Ol : J'ai l'impression qu'il y a des mamouths qui risquent de
voler bas, mais bon, pour atteindre la Réunion, c'est pas gagné ;-)
Pier-Ol : J'ai l'impression qu'il y a des mamouths qui risquent de
voler bas, mais bon, pour atteindre la Réunion, c'est pas gagné ;-)
Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Depuis Tiger, Appel a intégré dans ses OS un merveilleux langage de
programmation qui nous vient du Japon : le langage Ruby. Il est
parfaitement adapté pour ce genre de manipulation et supporte un mode
interactif de programmation. Ca te permet de tester au fur et à mesure
tes actions pour éviter les erreurs, par exemple.
Pour le démarrer, tu ouvres un terminal dans le répertoire qui
contient les répertoires et fichiers à transformer et tu tapes la
commande "irb" (Interactive Ruby). Tu pourras quitter irb à tout
moment avec la commande "exit".
Depuis Tiger, Appel a intégré dans ses OS un merveilleux langage de
programmation qui nous vient du Japon : le langage Ruby. Il est
parfaitement adapté pour ce genre de manipulation et supporte un mode
interactif de programmation. Ca te permet de tester au fur et à mesure
tes actions pour éviter les erreurs, par exemple.
Pour le démarrer, tu ouvres un terminal dans le répertoire qui
contient les répertoires et fichiers à transformer et tu tapes la
commande "irb" (Interactive Ruby). Tu pourras quitter irb à tout
moment avec la commande "exit".
Depuis Tiger, Appel a intégré dans ses OS un merveilleux langage de
programmation qui nous vient du Japon : le langage Ruby. Il est
parfaitement adapté pour ce genre de manipulation et supporte un mode
interactif de programmation. Ca te permet de tester au fur et à mesure
tes actions pour éviter les erreurs, par exemple.
Pour le démarrer, tu ouvres un terminal dans le répertoire qui
contient les répertoires et fichiers à transformer et tu tapes la
commande "irb" (Interactive Ruby). Tu pourras quitter irb à tout
moment avec la commande "exit".
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
Pierre-Olivier TAUBATY wrote:Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
Bon, j'arrive après la bataille, mais voici ma modeste contribution :
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
Explciations :
- Par rapport aux autres propositions, je me fiche de savoir où se place
le dossier contenant le fichier, et je prends le nom du dossier
contenant le fichier, pas le nom du sous-dossier du dossier courant.
(c'est utile si tes 1200 dossiers ne sont pas au même niveau)
- J'ai détaillé sur plusieurs lignes pour plus de lisibilité, ça ne le
rend pas moins performant mais beaucoup plus lisible.
- Les espaces et caractères spéciaux dans les noms de dossiers et
fichiers sont correctements traités.
- Je l'ai fait en zsh mais ça devrait marcher en bash...
- si tu le mets dans un script, tu peux remplacer "chemin/vers/dossier"
par "${1}" et tu donnes alors le dossier à traiter en paramètre du
script.
Pierre-Olivier TAUBATY <pas.de.spam@chez.moi> wrote:
Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
Bon, j'arrive après la bataille, mais voici ma modeste contribution :
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
Explciations :
- Par rapport aux autres propositions, je me fiche de savoir où se place
le dossier contenant le fichier, et je prends le nom du dossier
contenant le fichier, pas le nom du sous-dossier du dossier courant.
(c'est utile si tes 1200 dossiers ne sont pas au même niveau)
- J'ai détaillé sur plusieurs lignes pour plus de lisibilité, ça ne le
rend pas moins performant mais beaucoup plus lisible.
- Les espaces et caractères spéciaux dans les noms de dossiers et
fichiers sont correctements traités.
- Je l'ai fait en zsh mais ça devrait marcher en bash...
- si tu le mets dans un script, tu peux remplacer "chemin/vers/dossier"
par "${1}" et tu donnes alors le dossier à traiter en paramètre du
script.
Pierre-Olivier TAUBATY wrote:Bonjour à tous,
Voilà, j'ai un problème assez complexe à résoudre et je ne pense pas
m'en sortir par la voie clicodromique.
J'ai environ 1200 dossiers contenant chacun 1 fichier (y en avait plus
avant, mais je les ai virés.
J'aimerais renommer, en une seule fois chacun des fichiers présents dans
ces dossiers, en ajoutant au dévbut du nom, les 5 premiers caractères
présent au début du nom du dossier ...
Je ne doute pas que vous allez me sortir un formule du tonnerre de Zeus,
et je vous en remercie d'avance.
Bonne Journée
Bon, j'arrive après la bataille, mais voici ma modeste contribution :
#!/bin/zsh
RepATraiter="chemin/vers/dossier"
find "$RepATraiter" -type f -print | while read ficpath
do
ficname=$(basename "$ficpath")
dirname=$(dirname "$ficpath")
dirprefix=$(basename "$dirname")
dirprefix=${dirprefix:0:5}
echo "${ficname}" |grep "^[0-9]" >/dev/null || {
mv "${ficpath}" "${dirname}/${dirprefix}${ficname}"
}
done
Explciations :
- Par rapport aux autres propositions, je me fiche de savoir où se place
le dossier contenant le fichier, et je prends le nom du dossier
contenant le fichier, pas le nom du sous-dossier du dossier courant.
(c'est utile si tes 1200 dossiers ne sont pas au même niveau)
- J'ai détaillé sur plusieurs lignes pour plus de lisibilité, ça ne le
rend pas moins performant mais beaucoup plus lisible.
- Les espaces et caractères spéciaux dans les noms de dossiers et
fichiers sont correctements traités.
- Je l'ai fait en zsh mais ça devrait marcher en bash...
- si tu le mets dans un script, tu peux remplacer "chemin/vers/dossier"
par "${1}" et tu donnes alors le dossier à traiter en paramètre du
script.
Patrick Stadelmann wrote:In article <1ifb1js.qv3fph10wqr3cN%,
(Pierre-Olivier TAUBATY) wrote:Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
j'ignorais quoi faire. Comme une poule devant un bête opinel, quoi ...
Bonne Nuit.
Patrick Stadelmann <Patrick.Stadelmann@unine.ch> wrote:
In article <1ifb1js.qv3fph10wqr3cN%pas.de.spam@chez.moi>,
pas.de.spam@chez.moi (Pierre-Olivier TAUBATY) wrote:
Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
j'ignorais quoi faire. Comme une poule devant un bête opinel, quoi ...
Bonne Nuit.
Patrick Stadelmann wrote:In article <1ifb1js.qv3fph10wqr3cN%,
(Pierre-Olivier TAUBATY) wrote:Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script.
Coller le script dans l'Editeur de Script et cliquer sur "Exécuter".
Merci, c'est simple, mais vu que je n'ai jamais ouvert AppleScript,
j'ignorais quoi faire. Comme une poule devant un bête opinel, quoi ...
Bonne Nuit.
Martin Costabel wrote:Pierre-Olivier TAUBATY wrote:Patrick Stadelmann wrote:In article <1ifamhe.1lygny2136m2k0N%,
(Pierre-Olivier TAUBATY) wrote:J'ai oublié de préciser un détail important : si le renommage pouvait
être conditionnel, à savoir, si le nom du fichier comporte des chiffres
en début, ne pas le renommer.
En bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Merc, j'essayerais cela demain matin, lorsque j'aurais les yeux en face
des trous.Ceci suppose que tes noms de fichiers ne comportent pas de blancs et que
ton dossier de travail soit celui dans lequel se trouvent tes 1200
dossiers. Sinon, taper auparavant
cd /nom/du/dossier/en/question
Aïe Aïe Aïe, des espaces j'en ai des milliers, puisque chaque fichier
porte le titre du DVD auquel il correspond (bibliothèque de scan des
jaquettes.
Cela dit, avec automator, je peux aisément remplacer tout caractère,
très très rapidement dans toute une arborescence. Donc dans un premier
temps, je remplacerais tous les espaces par des _ et ensuite, manoeuvre
inverse.
Je te dirais ce que cela a donné demain, ou Lundi.
Merci encore.
Martin Costabel <costabel@wanadoo.fr> wrote:
Pierre-Olivier TAUBATY wrote:
Patrick Stadelmann <Patrick.Stadelmann@unine.ch> wrote:
In article <1ifamhe.1lygny2136m2k0N%pas.de.spam@chez.moi>,
pas.de.spam@chez.moi (Pierre-Olivier TAUBATY) wrote:
J'ai oublié de préciser un détail important : si le renommage pouvait
être conditionnel, à savoir, si le nom du fichier comporte des chiffres
en début, ne pas le renommer.
En bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Merc, j'essayerais cela demain matin, lorsque j'aurais les yeux en face
des trous.
Ceci suppose que tes noms de fichiers ne comportent pas de blancs et que
ton dossier de travail soit celui dans lequel se trouvent tes 1200
dossiers. Sinon, taper auparavant
cd /nom/du/dossier/en/question
Aïe Aïe Aïe, des espaces j'en ai des milliers, puisque chaque fichier
porte le titre du DVD auquel il correspond (bibliothèque de scan des
jaquettes.
Cela dit, avec automator, je peux aisément remplacer tout caractère,
très très rapidement dans toute une arborescence. Donc dans un premier
temps, je remplacerais tous les espaces par des _ et ensuite, manoeuvre
inverse.
Je te dirais ce que cela a donné demain, ou Lundi.
Merci encore.
Martin Costabel wrote:Pierre-Olivier TAUBATY wrote:Patrick Stadelmann wrote:In article <1ifamhe.1lygny2136m2k0N%,
(Pierre-Olivier TAUBATY) wrote:J'ai oublié de préciser un détail important : si le renommage pouvait
être conditionnel, à savoir, si le nom du fichier comporte des chiffres
en début, ne pas le renommer.
En bash, c'est plus court (une ligne):
for F in */* ; do B=`basename $F`; D=`dirname $F`; echo $B | grep
'^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:3}$B`; done
Ou, en plus joli et plusieurs lignes
for F in */*
do
B=`basename $F`
D=`dirname $F`
echo $B | grep '^[0-9]' >/dev/null || mv $F $D/`echo ${D:0:5}$B`
done
Merc, j'essayerais cela demain matin, lorsque j'aurais les yeux en face
des trous.Ceci suppose que tes noms de fichiers ne comportent pas de blancs et que
ton dossier de travail soit celui dans lequel se trouvent tes 1200
dossiers. Sinon, taper auparavant
cd /nom/du/dossier/en/question
Aïe Aïe Aïe, des espaces j'en ai des milliers, puisque chaque fichier
porte le titre du DVD auquel il correspond (bibliothèque de scan des
jaquettes.
Cela dit, avec automator, je peux aisément remplacer tout caractère,
très très rapidement dans toute une arborescence. Donc dans un premier
temps, je remplacerais tous les espaces par des _ et ensuite, manoeuvre
inverse.
Je te dirais ce que cela a donné demain, ou Lundi.
Merci encore.