mv: impossible d'écraser le répertoire avec un non-répertoire
Est-il possible de contourner ce problème?
J'ai une situation où j'ai besoin de déplacer des fichiers sur 1 annuaire ci-dessous.
/a/b/c/d/e/f/g
problème, c'est que le nom de fichier à l'intérieur de g/
répertoire est le même que le nom du répertoire
et je reçois le message d'erreur suivant:
mv: cannot overwrite directory `../297534' with non-directory
Exemple:
/home/user/data/doc/version/3766/297534 est un répertoire, à l'intérieur il est également un fichier nommé 297534
j'ai donc besoin de déplacer ce fichier dans /home/user/data/doc/version/3766
Commande
C'est ce que je suis en cours d'exécution: (dans une boucle for)
cd /home/user/data/doc/version/3766/297534
mv * ../
source d'informationauteur anarchist
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas forcer mv à l'écrasement d'un répertoire avec un fichier avec le même nom. Vous aurez besoin de supprimer ce fichier avant d'utiliser votre commande mv.
Ajouter une couche supplémentaire dans votre boucle.
Remplacer
mv * ../
avecCela permettra d'assurer que tous les conflits seront supprimés d'abord, en supposant que vous n'avez pas de soins sur le répertoire que vous êtes à l'écrasement.
Noter que cette sera exploser si vous avez un fichier dans le répertoire courant qui correspond au répertoire courant du nom. Par exemple, si vous êtes dans
/home/user/data/doc/version/3766/297534
et que vous essayez de déplacer un répertoire appelé297534
. Une solution de contournement à ce problème est d'ajouter un suffixe long de chaque fichier, il y a donc peu de chance de correspondre à