Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

33 réponses
Avatar
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

10 réponses

1 2 3 4
Avatar
pas.de.spam
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


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

Avatar
Patrick Stadelmann
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.


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

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


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


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


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



Avatar
Martin Costabel
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

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



Avatar
Eric Levenez
Le 12/04/08 21:55, dans <480113ce$0$893$, « Martin
Costabel » a écrit :

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 -- <http://www.levenez.com/&gt;
Unix is not only an OS, it's a way of life.

Avatar
pas.de.spam
Le Moustique wrote:


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


Avatar
pas.de.spam
Eric Levenez wrote:

Le 12/04/08 21:55, dans <480113ce$0$893$, « 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 ?




--
PO.

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


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

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




Avatar
Patrick Stadelmann
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".

Patrick
--
Patrick Stadelmann

1 2 3 4