#1 Le 19/12/2017, à 17:39
- DonutMan75
[Résolu] Copier et renommer ?
Bonsoir à tous,
quand on fait une copie manuelle d'un ensemble de fichiers vers un répertoire cible, l'interface graphique nous laisse les choix de remplacer, skipper ou bien renommer (en tout cas sous OSX, ce n'est pas le cas de Ubuntu 12.04 et j'ai pas testé sous 16.04LTS).
Je me demandais s'il existait une façon de renommer automatiquement lors de la copie de sorte qu'aucun fichier ne soit écrasé.
Exemple :
$ ls ./in/*
a
b
$ ls ./out/*
a
$ ma_commande ./in/* ./out/*
$ ls ./out/*
a
a_001
b
$ ma_commande ./in/* ./out/*
$ ls ./out/*
a
a_001
a_002
b
b_001
J'ai regardé les options de cp et rien ne semble faire l'affaire ("no-clobber" dit juste qu'on skip si j'ai bien compris).
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i
option)
Avez-vous des idées ?
Au pire, je peux faire une commande shell du genre ci-dessous (pseudo-code avec des effets de bord mais vous voyez l'idée).
Qu'en dites vous ?
Merci d'avance
Donut
#! /bin/sh
FICHIER="$1"
REPERTOIRE_CIBLE="$2"
N=0
TANT QUE REPERTOIRE_CIBLE/FICHIER_N existe FAIRE N=N+1
cp FICHIER REPERTOIRE_CIBLE/FICHIER_N
Dernière modification par DonutMan75 (Le 20/12/2017, à 08:14)
Hors ligne
#2 Le 19/12/2017, à 18:33
- Compte anonymisé
Re : [Résolu] Copier et renommer ?
l'option -b de cp peut correspondre à tes besoins
$ > fichier1
$ cp -b fichier1 fichier2
$ ls fichier*
fichier1 fichier2
$ cp -b fichier1 fichier2
$ ls fichier*
fichier1 fichier2 fichier2~
$ rm fichier*~
$ cp --backup=t fichier1 fichier2
$ cp --backup=t fichier1 fichier2
$ ls fichier*
fichier1 fichier2 fichier2.~1~ fichier2.~2~
si le fichier existe, copie le fichier, sinon crée une sauvegarde
il existe plusieurs mode voir man
Dernière modification par Compte anonymisé (Le 19/12/2017, à 18:34)
#3 Le 19/12/2017, à 20:17
- Roschan
Re : [Résolu] Copier et renommer ?
La meilleure solution serait d'utiliser une version encore supportée, et non pas une version obsolète comme 12.04, ça réglerait de facto le problème
Hors ligne
#4 Le 20/12/2017, à 08:13
- DonutMan75
Re : [Résolu] Copier et renommer ?
Hello,
merci à vous deux pour vos retours.
Le -b fait l'affaire en effet, même si le contrôle du format du nom de sortie n'est pas parfait.
Bonne journée à tous et à bientôt !
Donut
Hors ligne