Renommer fichiers en masse dans diverses locations

krom54 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
krom54 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

petit soucis sous linux parceque j'ai pas le niveau je pense ;)

J'essaye en gros de renommer tout les fichiers jpeg d'un dossier et de ses sous dossier et ceci dans le but de copier ensuite tout les jpg dans un dossier commun sans risque décrasement avec la commande "find" ..


mais je suis largué completement ^^ a l'aide SVP ;)
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

J'ai pas tout compris de ce que tu voulais exactement au final, mais voici un exemple de copie sans écraser les doublons éventuels :

L'arborescence avant (3 dossiers contenant les mêmes fichiers) :
$ tree
.
|-- backup
'-- rep
|-- A
| |-- a.jpg
| |-- b.jpg
| |-- c.jpg
| |-- d.jpg
| '-- e.jpg
|-- B
| |-- a.jpg
| |-- b.jpg
| |-- c.jpg
| |-- d.jpg
| '-- e.jpg
'-- C
|-- a.jpg
|-- b.jpg
|-- c.jpg
|-- d.jpg
'-- e.jpg

La copie avec
find ... -exec cp ...
en incrémentant les doublons :
$ find rep/ -type f -name "*.jpg" -exec cp --backup=t {} backup/ \;


$ tree
.
|-- backup
| |-- a.jpg
| |-- a.jpg.~1~
| |-- a.jpg.~2~
| |-- b.jpg
| |-- b.jpg.~1~
| |-- b.jpg.~2~
| |-- c.jpg
| |-- c.jpg.~1~
| |-- c.jpg.~2~
| |-- d.jpg
| |-- d.jpg.~1~
| |-- d.jpg.~2~
| |-- e.jpg
| |-- e.jpg.~1~
| '-- e.jpg.~2~
'-- rep
|-- A
| |-- a.jpg
| |-- b.jpg
| |-- c.jpg
| |-- d.jpg
| '-- e.jpg
|-- B
| |-- a.jpg
| |-- b.jpg
| |-- c.jpg
| |-- d.jpg
| '-- e.jpg
'-- C
|-- a.jpg
|-- b.jpg
|-- c.jpg
|-- d.jpg
'-- e.jpg

5 directories, 30 files
0
krom54 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Un grand merci ;) mais ici j'obient des fichiers caché de backup des doublons et ne peut voir que a.b.c.d.e le truc c'est que j'ai des doublons dans les nom de fichier photo mais pas forcément de vrais doublon des images ....

je me suis dit que je pourrais préalablement renomer tout les fichiers disséminés sur le dur avec un find plus un rename ou un mmv mais je ne trouve pas le moyen de faire un rename ou un mmv qui renomerais les fichiers en allant de 1 a l'infini ...

du coup je me suis arreté a ca :

find . -name "*.jpg" -size +100k -exec mmv -c {} picture.jpg \;

qui cherche puis copie les fichier jpg en les renomant tous en picture.jpg ce qui ne m'aide pas du tout vu que chaque nouveau fichier ecrase l'autre ^^
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
mais ca ne marche pas ... :-(
c'est effectivement ce que je voulais sauf qu'ici dans backup j'obtient juste a.b.c.d.e :(
en gros les fichiers des dossiers A. sont écrasé par ceux de B puis ceux de C :(
Euh... ce n'est pas normal ;-\
Quel système d'exploitation ?
Quel shell ?
Quelle version de cp (
cp --version
) ?

Peux-tu rajouter l'option -v (verbose) à la commande cp afin d'avoir un peu plus de détail ?
Exemple :

$ find rep/ -type f -name "*.jpg" -exec cp -v --backup=t {} backup/ \;
«rep/C/e.jpg» -> «backup/e.jpg»
«rep/C/d.jpg» -> «backup/d.jpg»
«rep/C/c.jpg» -> «backup/c.jpg»
«rep/C/b.jpg» -> «backup/b.jpg»
«rep/C/a.jpg» -> «backup/a.jpg»
«rep/B/e.jpg» -> «backup/e.jpg» (archive : «backup/e.jpg.~1~»)
«rep/B/d.jpg» -> «backup/d.jpg» (archive : «backup/d.jpg.~1~»)
«rep/B/c.jpg» -> «backup/c.jpg» (archive : «backup/c.jpg.~1~»)
«rep/B/b.jpg» -> «backup/b.jpg» (archive : «backup/b.jpg.~1~»)
«rep/B/a.jpg» -> «backup/a.jpg» (archive : «backup/a.jpg.~1~»)
«rep/A/e.jpg» -> «backup/e.jpg» (archive : «backup/e.jpg.~2~»)
«rep/A/d.jpg» -> «backup/d.jpg» (archive : «backup/d.jpg.~2~»)
«rep/A/c.jpg» -> «backup/c.jpg» (archive : «backup/c.jpg.~2~»)
«rep/A/b.jpg» -> «backup/b.jpg» (archive : «backup/b.jpg.~2~»)
«rep/A/a.jpg» -> «backup/a.jpg» (archive : «backup/a.jpg.~2~»)
0
krom54 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
désolé j'ai edité mon message trop vite ;)

ca marche ( j'affichais pas les fichiers caché ;) ) enfin je me retrouve bien avec des fichier xx.jpg~ mais ca m'aide pas car comme je te l'écrit plus haut du coup je ne peut pas voir les fichiers .... ( sauf à enlever manuellement ~1~ ]

En gros ce que je cherche a faire c'est un find + cp mais si cp rencontre un fichiers au nom identitque il rajoute un 1 par ex, et si celui avec un 1 supplémentaire est aussi en double il en rajoute encore 1 etc etc ...

enfin Cp a pas l'air de faire ca ... mais ya bien un truc ^^

encore merci et désolé du EDIT intempestif :) je ne pensais pas que tu serais aussi réactif ;)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Une solution serait de faire une petite boucle sur les fichiers se terminant par "~" et de les renommer :

$ for A in *~; do mv -v "${A}" "${A#*~}${A%.*}"; done
«a.jpg.~1~» -> «1~a.jpg»
«a.jpg.~2~» -> «2~a.jpg»
«b.jpg.~1~» -> «1~b.jpg»
«b.jpg.~2~» -> «2~b.jpg»
«ccm.jpg.~1~» -> «1~ccm.jpg»
«ccm.jpg.~2~» -> «2~ccm.jpg»
«c.jpg.~1~» -> «1~c.jpg»
«c.jpg.~2~» -> «2~c.jpg»
«d.jpg.~1~» -> «1~d.jpg»
«d.jpg.~2~» -> «2~d.jpg»
«e.jpg.~1~» -> «1~e.jpg»
«e.jpg.~2~» -> «2~e.jpg»
0
krom54 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
j'y songeais aussi mais pas la moindre idée de comment faire :) merci ca semble marcher nikel :) je ferme pas encore le sujet au cas ou ;)

un grand merci :)
0