Comment renommer un répertoire via la ligne de commande?


Réponses:


737
mv /home/user/oldname /home/user/newname


Article cool. C'est exactement le but.
Rafał Cieślak

77
Cela ne fonctionnera pas si le nouveau nom est déjà un répertoire existant. Au lieu de cela, il déplacera l'ancien répertoire dans le nouveau.
cxrodgers

9
Si le nom du répertoire est identique à la capitalisation, vous obtiendrez No such file or directory. Pour éviter cela, faites quelque chose comme mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF

9
@cxrodgers: pass --no-target-directory( -T) , pour éviter de traiter newnamecomme un répertoire cible.
JFS

123

mv peut faire deux emplois.

  1. Il peut déplacer des fichiers ou des répertoires
  2. Il peut renommer des fichiers ou des répertoires

Pour renommer un fichier ou un répertoire, tapez ceci dans Terminal:

mv old_name new_name 

avec un espace entre les anciens et les nouveaux noms.

Pour déplacer un fichier ou un répertoire, tapez ceci dans Terminal.

mv file_name ~/Desktop 

il déplacera le fichier sur le bureau.

Si est un répertoire, vous devez ajouter -Ravant le nom du répertoire:

mv -R directory_name ~/Desktop

3
mvsur Ubuntu provient de GNU coreutils. AFAICT n’a pas d’ -Roption, il n’est pas nécessaire lors du déplacement d’un répertoire.
arielf

-r ne fonctionne même pas
user1735921

La bonne option est -T. Voir la réponse de @ bmaupin pour son comportement.
chronométrique

39
mv -T /home/user/oldname /home/user/newname

Cela renommera le répertoire si la destination n'existe pas ou s'il existe mais qu'il est vide. Sinon, cela vous donnera une erreur.

Si vous faites cela à la place:

mv /home/user/oldname /home/user/newname

Une des deux choses va se passer:

  • Si /home/user/newnamen'existe pas, il sera renommé /home/user/oldnameen/home/user/newname
  • S'il /home/user/newnameexiste, il entrera /home/user/oldnamedans /home/user/newname, c'est à dire/home/user/newname/oldname

Source: Comment décider que mv se déplace dans un répertoire plutôt que de le remplacer?


Ne fonctionne pas si vous souhaitez mettre le nom du répertoire en majuscule dans un système de fichiers ne respectant pas la casse (probablement sous MacOS). mv -T $PWD/analisys $PWD/Analisysretourne mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. J'ai travaillé autour de cela en utilisant un nom intermédiaire (c'est-à-dire analisys_).
basilikode

La commande n'a peut-être pas abouti en raison des limitations du système de fichiers, mais d'un autre point de vue, elle a bien interprété vos intentions (renommer un répertoire, ne pas le déplacer) :)
bmaupin

avez-vous essayé cela?
Mahmoud S. Marwad

5

Si vous souhaitez renommer un répertoire de votre niveau dans le système de fichiers (par exemple, vous vous trouvez dans votre répertoire de base et souhaitez renommer un répertoire qui se trouve également dans votre répertoire de base):

mv Directory ./NewNameDirectory

4

Cette gvfs-movecommande renommera également les fichiers et les répertoires.

gvfs-move /home/user/oldname /home/user/newname

3

gvfs-rename renommera également les répertoires. Il y aura une erreur si un répertoire avec le nouveau nom existe déjà. La seule limitation est que vous ne pouvez pas utiliser un chemin d'accès avec le nom du dossier. Alors

gvfs-rename /home/boo /home/boo-the-dog 

ne fonctionnera pas, mais

cd /home 
gvfs-rename boo boo-the-dog 

marchera. Pas aussi utile que mv -T mais j'ai lu dans l'homme qu'il était destiné aux opérations du réseau.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.