Appels aux Cadors de la Ligne de commande : Renommage de fichier assez complexe.

Le
pas.de.spam
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


--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
pas.de.spam
Le #3195841
Pierre-Olivier TAUBATY
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'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.
--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr

Patrick Stadelmann
Le #3195691
In article (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.


Ca ne teste que le 1er caractère du nom du fichier et ne renomme ce
dernier que s'il ne s'agit pas d'un chiffre. Pas vraiment testé...

set numList to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}

set src to choose folder with prompt ¬
"Dossiers contenant les 1200 dossiers "
tell application "Finder"
set theFolders to folders of src
repeat with myFolder in theFolders
repeat 1 times
set folderName to name of myFolder
try
set theFile to file 1 of myFolder
on error
exit repeat
end try
set fileName to name of theFile
if character 1 of fileName is not in numList then
set fileName to (characters 1 thru 5 of folderName ¬
& fileName) as text
set name of theFile to fileName
end if
end repeat
end repeat
end tell

Patrick
--
Patrick Stadelmann
pas.de.spam
Le #3195681
Patrick Stadelmann
In article (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.


Ca ne teste que le 1er caractère du nom du fichier et ne renomme ce
dernier que s'il ne s'agit pas d'un chiffre. Pas vraiment testé...

set numList to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}

set src to choose folder with prompt ¬
"Dossiers contenant les 1200 dossiers "
tell application "Finder"
set theFolders to folders of src
repeat with myFolder in theFolders
repeat 1 times
set folderName to name of myFolder
try
set theFile to file 1 of myFolder
on error
exit repeat
end try
set fileName to name of theFile
if character 1 of fileName is not in numList then
set fileName to (characters 1 thru 5 of folderName ¬
& fileName) as text
set name of theFile to fileName
end if
end repeat
end repeat
end tell

Patrick


Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script. Je n'ai jamais utilisé c'te bête là moi.
Mes maigres connaissances s'arrêtent à Automator. D'ailleurs, depuis le
passage à Tiger, ce dernier a vu sa vitesse d'éxécution sur les
opérations de renommage multipliée au moins par 20 si ce n'est 50.
--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr


pas.de.spam
Le #3195661
Pierre-Olivier TAUBATY
Patrick Stadelmann
In article (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.


Ca ne teste que le 1er caractère du nom du fichier et ne renomme ce
dernier que s'il ne s'agit pas d'un chiffre. Pas vraiment testé...

set numList to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}

set src to choose folder with prompt ¬
"Dossiers contenant les 1200 dossiers "
tell application "Finder"
set theFolders to folders of src
repeat with myFolder in theFolders
repeat 1 times
set folderName to name of myFolder
try
set theFile to file 1 of myFolder
on error
exit repeat
end try
set fileName to name of theFile
if character 1 of fileName is not in numList then
set fileName to (characters 1 thru 5 of folderName ¬
& fileName) as text
set name of theFile to fileName
end if
end repeat
end repeat
end tell

Patrick


Merci, Patrick, mais ...... euh ......... je fais quoi avec ce script ?
que je suppose Apple Script. Je n'ai jamais utilisé c'te bête là moi.
Mes maigres connaissances s'arrêtent à Automator. D'ailleurs, depuis le
passage à Tiger, ce dernier a vu sa vitesse d'éxécution sur les
^^^^^^^^^


opérations de renommage multipliée au moins par 20 si ce n'est 50.


Je voulais bien, sûr parler de Leopard. J'arrive pas à m'y faire, De
Cheetah (10.0) à Puma (10.1), ça paraissait logique
De Puma à Jaguar (10.2) ça pouvait encore aller
De Jaguar à Panther (10.3), c'est la mêmebébête sauf qu'on change de
continent.
De panther à tiger (10.4), on gagne en puissance, donc, le choix
s'impose.

Mais de Panther à Léopard, j'y arrive pas. Lion, aurait mieux passé ;-)
--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr



Martin Costabel
Le #3195641
Pierre-Olivier TAUBATY wrote:
Patrick Stadelmann
In article (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

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

--
Martin



Eric Levenez
Le #3195631
Le 12/04/08 21:55, dans Costabel »
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 ?

et que
ton dossier de travail soit celui dans lequel se trouvent tes 1200
dossiers. Sinon, taper auparavant

cd /nom/du/dossier/en/question


--
Éric Lévénez -- Unix is not only an OS, it's a way of life.

pas.de.spam
Le #3195611
Le Moustique

Mais de Panther à Léopard, j'y arrive pas. Lion, aurait mieux passé ;-)


Ah non, le lion c'est un gros flemmard, qui fait bosser son harem, ça
ferait désordre... :-)


ben , je vois pas pourquoi, il a tout compris de la vie, ce brave (très)
grosminet ...

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é ... ;-)
--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr


pas.de.spam
Le #3195601
Eric Levenez
Le 12/04/08 21:55, dans
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 ?




--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr


pas.de.spam
Le #3195591
Martin Costabel
Pierre-Olivier TAUBATY wrote:
Patrick Stadelmann
In article (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.
--
PO.

Pour m'écrire : po_taubaty(arobas)yahoo(point)fr




Patrick Stadelmann
Le #3195561
In article (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".

Patrick
--
Patrick Stadelmann
Publicité
Poster une réponse
Anonyme