Come rinominare una directory tramite la riga di comando?


Risposte:


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


Articolo interessante. Questo è esattamente il punto.
Rafał Cieślak,

77
Questo non funzionerà se il nuovo nome è già una directory esistente. Invece, sposterà la vecchia directory all'interno di quella nuova.
cxrodgers,

9
Se il nome della directory è lo stesso con le maiuscole, otterrai No such file or directory. Per evitare questo, fai qualcosa del genere mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF,

9
@cxrodgers: pass --no-target-directory( -T) , per evitare di essere trattato newnamecome una directory di destinazione.
jfs

123

mv può fare due lavori.

  1. Può spostare file o directory
  2. Può rinominare file o directory

Per rinominare un file o una directory, digita questo nel Terminale:

mv old_name new_name 

con spazio tra i nomi vecchi e nuovi.

Per spostare un file o una directory digitare questo in Terminale.

mv file_name ~/Desktop 

sposterà il file sul desktop.

Se è una directory è necessario aggiungere -Rprima del nome della directory:

mv -R directory_name ~/Desktop

3
mvsu Ubuntu proviene da coreutils GNU. AFAICT non ha -Run'opzione, né è necessario quando si sposta una directory.
arielf

-r non funziona nemmeno
user1735921

L'opzione corretta è -T. Vedi la risposta di @ bmaupin per il suo comportamento.
cronometrico

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

Ciò rinominerà la directory se la destinazione non esiste o se esiste ma è vuota. Altrimenti ti darà un errore.

Se invece lo fai:

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

Accadrà una delle due cose:

  • Se /home/user/newnamenon esiste, verrà rinominato /home/user/oldnamein/home/user/newname
  • Se /home/user/newnameesiste, si sposterà /home/user/oldnamein /home/user/newname, ad es/home/user/newname/oldname

Fonte: come decidere che mv si sposta in una directory anziché sostituirla?


Non funziona se si desidera scrivere in maiuscolo il nome della directory in un filesystem senza distinzione tra maiuscole e minuscole (probabilmente su MacOS). mv -T $PWD/analisys $PWD/Analisysritorna mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Ho risolto il problema usando un nome intermedio (es analisys_.).
basilikode,

Il comando non può aver avuto successo a causa delle limitazioni del filesystem, ma da un'altra prospettiva era riuscito a interpretare le vostre intenzioni (rinominare una directory, non spostarlo) :)
bmaupin

hai provato questo?
Mahmoud S. Marwad,

5

Se si desidera rinominare una directory al proprio livello nel file system (ad esempio, ci si trova nella propria directory home e si desidera rinominare una directory che si trova anche nella propria directory home):

mv Directory ./NewNameDirectory

4

Questo gvfs-movecomando rinominerà anche file e directory.

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

3

gvfs-rename rinominerà anche le directory. Verrà visualizzato un errore se esiste già una directory con il nuovo nome. L'unica limitazione è che non è possibile utilizzare un percorso con il nome della cartella. Così

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

non funzionerà, ma

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

funzionerà. Non utile come mv -T ma ho letto nell'uomo che era destinato alle operazioni di rete.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.