web-dev-qa-db-fra.com

Comment puis-je copier des fichiers avec des noms de fichiers en double dans un répertoire et conserver les deux fichiers en les renommant automatiquement?

Sous Windows, lorsque vous copiez un fichier dans un répertoire contenant déjà un fichier portant ce nom, il vous demande si vous souhaitez:

  1. copier le fichier et remplacer/écraser le fichier existant
  2. annuler la copie du nouveau fichier dans le répertoire
  3. copier le fichier, mais le renommer (comme quelque chose comme "filename - copy (1)")

Lorsque je fais cela dans Ubuntu, je n'ai pas cette 3ème option (ce qui est souvent une option très utile). Y a-t-il un moyen de faire cela dans Ubuntu?

8
heisenbergman

Malheureusement, Nautilus n'a pas cette option.

Option 1: un autre gestionnaire de fichiers

Vous pouvez essayer un autre gestionnaire de fichiers comme Dolphin .

Install Dolphin (nécessite le nivers référentiel)

Option 2: ligne de commande

Vous pouvez également utiliser le programme en ligne de commande cp(1) avec l'option de sauvegarde:

cp --backup -t DESTINATION SOURCE [SOURCE...]

Ceci a les effets suivants qui peuvent être contrôlés avec d'autres options comme décrit dans la page de manuel de cp(1) :

--backup[=CONTROL] - effectue une sauvegarde de chaque fichier de destination existant

-b - ressemble à --backup mais n'accepte pas d'argument

-S, --suffix=SUFFIX - remplace le suffixe de sauvegarde habituel

Le suffixe de sauvegarde est ~, sauf s'il est défini avec --suffix ou SIMPLE_BACKUP_SUFFIX. La méthode de contrôle de version peut être sélectionnée via l'option --backup ou via la variable d'environnement VERSION_CONTROL. Voici les valeurs:

  • nonename__, offname__: ne faites jamais de sauvegardes (même si --backup est donné)
  • numberedname__, tname__: effectuer des sauvegardes numérotées
  • existingname__, nilname__: numéroté si des sauvegardes numérotées existent, simple sinon
  • simplename__, nevername__: faites toujours des sauvegardes simples

Exemple

cp --backup=existing --suffix=.orig -t ~/Videos ~/Music/*

Cela copiera tous les fichiers de ~/Music dans ~/Videos. Si un fichier du même nom existe à la destination, il est renommé en ajoutant .orig à son nom en tant que sauvegarde. Si un fichier portant le même nom que la sauvegarde existe, la sauvegarde est renommée en ajoutant .1 et, le cas échéant, .2, etc. Ensuite seulement, le fichier source est copié vers la destination.

Si vous souhaitez copier des fichiers dans des sous-répertoires de manière récursive, utilisez:

cp -R --backup=existing --suffix=.orig -t ~/Videos ~/Music
14
David Foerster

trouvé ceci sur le superutilisateur :

#!/bin/bash
cp -vn "$1" "$2"/ || cp -vn "$1" "$2"/"${1##*/}"~"$(md5sum "$1" | cut -f1 -d' ')"

Le fichier portant le même nom est renommé avec le md5sum ajouté au nom. Si vous enregistrez le fichier sous un nom de fichier tel que "saveCopy", vous pouvez utiliser find comme ceci pour l'exécuter:

find . -name 'z*.jpg' -exec ./saveCopy {} /tmp/Extracted/ \;

Pour plus d'informations à ce sujet, voir le lien.

2
Rinzwind

Il y avait une solution (ultracopier) à cette question dans ce forum auparavant: voir https://ubuntuforums.org/showthread.php?t=2251859 D'après cette discussion, il peut être intégré à Nautilus.

0
Adalbert Hanßen