J'ai une énorme arborescence de fichiers. Certains fichiers ont le même nom mais dans des cas différents, par exemple, some_code.c
et Some_Code.c
.
Donc, lorsque j'essaie de le copier sur un système de fichiers NTFS / FAT, il me demande si je veux qu'il remplace le fichier ou l'ignore.
Existe-t-il un moyen de renommer automatiquement ces fichiers, par exemple, en ajoutant (1)
au nom du fichier de conflit (comme le fait Windows 7)?
sudo fdisk -l /dev/sda
), et je l'ai faittouch foo; touch Foo
et fini avec 2 fichiersfoo
etFoo
. Mais je ne suis pas curieux de pouvoir redémarrer Windows, pour voir à quoi ils ressemblent là-bas. Migth, c'est juste un problème de FAT? Ah - J'ai une clé USB avec FAT, et je pourrais créer un système FAT dans un fichier, ... - un instant s'il vous plaît. :)Réponses:
De nombreux outils GNU tels que
cp
,mv
et letar
soutien en créant des fichiers de sauvegarde lorsque la cible existe. Autrement dit, lors de la copiefoo
versbar
, s'il existe déjà un fichier appelébar
, l' existantbar
sera renommé, et après la copiebar
contiendra le contenu defoo
. Par défaut,bar
est renommébar~
, mais le comportement peut être modifié:Il existe d'autres variantes, telles que la création de sauvegardes numérotées uniquement lorsqu'une existe déjà. Voir le manuel coreutils pour plus de détails.
la source
brew install coreutils
, puis utilisez la commande à lagcp
place.j'ai essayé
pour trouver des candidats possibles, et mcopy s'est présenté.
montre une option prometteuse
-D clash-option
n'est-ce pas cool? Mais pas si cool - ce n'est pas décrit. Mais il y a quelques conseils sur mtools.dvi, que j'ai recherché sur mon système, sans succès, et via google, sans succès, mais ensuite, avec google, j'ai cherché directementmcopy clash-option
et trouvé ce site .J'ai fait un petit test
aux tests pour autorename et targetdir
a
- au lieu de renommer automatiquement, il m'a demandé que chaque fichier soit ignoré ou remplacé, ce stupide s ....Ma version est
mtools-4.0.10
et la page d'aide date de 1996 - 15 ans. Faut-il vraiment perdre certaines fonctionnalités, en attendant?Je diviserais le travail en deux étapes:
find
et exécutez ce script pour chaque fichier que vous souhaitez copier.Allons-nous aider dans cette approche? :)
Voici un script, pour nommer automatiquement les fichiers:
et voici mon invocation de test:
Remarque: -maxdepth, -name et -type sont utilisés pour restreindre considérablement le nombre de fichiers affectés. Je n'ai pas testé le script pour des structures de fichiers plus profondes, ni pour des blancs dans les noms de fichiers et autres caractères géniaux comme le saut de ligne, le saut de page et ainsi de suite.
J'ai utilisé .1 car il ne pose pas de problème dans la plupart des commandes, tandis que a (et a) ont souvent besoin de masquage.
la source
Pas avec GNU
cp
, du moins.Il est fortement conseillé de ne pas avoir de noms de fichiers en double (en ignorant la casse), ils vous causeront juste un monde de douleur. Rechercher une liste de ces doublons à l'aide de
Renommez ensuite manuellement l'un des fichiers de chaque ligne en cas de sortie. Essayez d'éviter de créer des doublons à l'avenir.
la source