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 -
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 ;)
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:
- Renommer fichiers en masse dans diverses locations
- Renommer des fichiers en masse - Guide
- Renommer iphone - Guide
- Comment renommer quelqu'un sur instagram - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
2 réponses
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) :
La copie avec
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
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 ^^
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 ^^
mais ca ne marche pas ... :-(Euh... ce n'est pas normal ;-\
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 :(
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~»)
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 ;)
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 ;)
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»