Gestionar fitxers i directoris a Linux

La comanda mv a Linux: moure i canviar el nom de fitxers



La comanda mv (de move) serveix per a dues coses que a Linux són la mateixa: moure fitxers i directoris d’un lloc a un altre i canviar-los el nom. No hi ha cap comanda rename estàndard per canviar el nom d’un fitxer: es fa amb mv.

Sintaxi

mv [opcions] origen destí
mv [opcions] origen... directori/
  • Si el destí és un directori que existeix, l’origen es mou a dins i conserva el nom.
  • Si el destí no existeix, l’origen passa a dir-se així (canvi de nom).
  • Si el destí és un fitxer que existeix, se sobreescriu sense preguntar, tret que facis servir -i o -n.

Opcions més útils

OpcióQuè fa
-iPregunta abans de sobreescriure un fitxer existent
-nNo sobreescriu mai cap fitxer existent
-fNo pregunta mai (és el comportament per defecte; anul·la un -i anterior)
-uNomés mou si l’origen és més nou que el destí, o si el destí no existeix
-bSi sobreescriu, abans fa una còpia de seguretat del destí (acabada en ~)
-vMostra què fa
-t directoriIndica el directori de destí al principi (pràctic amb xargs i find)

Exemples

Canviar el nom d’un fitxer:

$ mv -v informe.txt informe_2026.txt
renamed 'informe.txt' -> 'informe_2026.txt'

Moure un fitxer a un altre directori:

mv informe_2026.txt ~/Documents/

Moure i canviar el nom alhora:

mv dades.csv arxiu/dades_antigues.csv

Moure diversos fitxers a un directori:

mv foto1.jpg foto2.jpg foto3.jpg ~/Imatges/
mv *.jpg ~/Imatges/

Moure o reanomenar un directori sencer. A diferència de cp, no cal cap opció -r:

mv projecte projecte_vell

Demanar confirmació abans de sobreescriure:

$ mv -i notes.txt desti/
mv: overwrite 'desti/notes.txt'?

Respon y per sobreescriure o n per deixar-lo com està.

Sobreescriure, però guardant una còpia del fitxer que hi havia:

$ mv -b notes.txt desti/
$ ls desti
notes.txt  notes.txt~

Com funciona per dins

Dins del mateix sistema de fitxers, mv no copia res: només canvia l’entrada del directori. Per això moure un fitxer de 50 GB d’una carpeta a una altra del mateix disc és instantani.

Si l’origen i el destí són en sistemes de fitxers diferents (un altre disc, una memòria USB, una partició diferent), mv ha de copiar les dades i després esborrar l’original. Tarda el que tardaria una còpia i, si s’interromp a mitges, pots quedar-te amb una còpia incompleta. Per a moviments grans entre discos és més segur copiar amb rsync, comprovar-ho i esborrar l’original després.

Compte amb…

  • mv sobreescriu sense avisar. Si treballes amb fitxers importants, fes servir -i o -n. Hi ha qui posa alias mv='mv -i' al ~/.bashrc.
  • Fitxers que comencen per guió: mv -fitxer.txt nou.txt dona error perquè mv llegeix -fitxer.txt com a opcions. Fes mv -- -fitxer.txt nou.txt o mv ./-fitxer.txt nou.txt.
  • Moure un directori sobre un altre que ja existeix: mv fotos copies/ posa fotos dins de copies si aquest existeix; si no existeix, el que fa és canviar el nom de fotos a copies. Comprova-ho amb ls abans.
  • No existeix mv -p: els permisos, el propietari i les dates es conserven sempre quan mous dins del mateix disc, perquè és el mateix fitxer.

Canviar el nom de molts fitxers

mv treballa amb un fitxer (o un destí) cada vegada. Per reanomenar en massa pots fer servir un bucle de Bash:

# Canviar l'extensió .jpeg per .jpg
for f in *.jpeg; do mv -- "$f" "${f%.jpeg}.jpg"; done

Per a casos més complexos hi ha eines específiques, com rename (paquet rename a Debian i Ubuntu) o find amb -exec.

Comandes relacionades