Linux / Come Rinominare un File o una Directory

Per rinominare un file o una directory in Linux, specifica il percorso esistente e il nuovo percorso in ordine con il comando mv. Se il nome di destinazione esiste già, potrebbe essere sovrascritto o la fonte potrebbe essere spostata in un luogo imprevisto, quindi dovrebbe essere controllato prima dell'esecuzione.

Formato di base per rinominare

Lo mv utilizzato in la guida per spostare file con mv viene utilizzato anche per rinominare. Se i due percorsi si trovano nella stessa directory, cambia solo il nome, e se si trovano in directory diverse, cambia anche la posizione.

mv -i -- source destination

-i controlla prima di sovrascrivere un file di destinazione esistente. -- indica la fine delle opzioni, quindi i nomi che iniziano con un trattino non vengono interpretati come opzioni. Gli esempi seguenti si basano su GNU coreutils mv e sulla shell Bash.

Preparare file e directory per la pratica

Esercitati in una directory temporanea in modo da non toccare i dati esistenti. Esegui i comandi riportati di seguito in ordine nella stessa shell. Il percorso della directory temporanea appena creata sarà memorizzato nella variabile workdir.

workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"

Se report.txt e docs appaiono nell'output, sei pronto. Per controllare il percorso, esegui printf '%s\n' "$workdir". Poiché i comandi utilizzano variabili della shell corrente, se apri un nuovo terminale, dovrai prepararti di nuovo.

Rinominare i file

Rinomina il file di pratica da report.txt a summary.txt e controlla i risultati. Assicurati che la nuova destinazione non esista già prima di eseguire.

ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"

Se avrà successo, l'elenco mostrerà summary.txt invece di report.txt, e l'ultimo comando produrrà example. Quando si rinomina all'interno dello stesso file system, il contenuto rimane lo stesso. Per tornare al nome originale, assicurarsi che il nome originale non sia in uso, quindi scambiare i due percorsi ed eseguire mv -i.

Rinominare le directory

Le directory vengono rinominate nello stesso modo. Il seguente comando rinomina docs in archive in un ambiente di pratica dove il target non esiste.

mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"

Se ha successo, archive sarà visualizzato al posto di docs. -T è un'opzione in GNU mv che non tratta l'ultimo percorso come directory di destinazione in modo speciale. Senza questa opzione, se si specifica una directory già esistente come destinazione, l’elemento di origine può essere spostato al suo interno invece di essere rinominato. Anche se si utilizza -T, possono verificarsi sostituzioni o errori a seconda del tipo e dello stato della destinazione esistente, quindi verificare prima. Le directory di destinazione non vuote non possono essere sostituite.

Verifica della sovrascrittura e del percorso

Se specifichi un file esistente come destinazione, il file potrebbe essere sovrascritto. Esegui prima il backup dei file importanti e rispondi a y solo quando sovrascrivi in risposta alla domanda di conferma da -i. Per evitare la sovrascrittura, inserisci n. Il testo di conferma può variare a seconda del sistema e delle impostazioni della lingua.

Se il nome del file contiene spazi, racchiudi l'intero percorso tra virgolette. Il seguente è un esempio di creazione di un file di pratica separato e successivo rinominamento.

printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"

Se alla fine viene visualizzato notes, il file è stato letto con un nuovo nome. Nel lavoro reale, se il percorso è specificato in modo errato o non ci sono permessi, controllare il messaggio di errore e i permessi di scrittura delle directory di origine e di destinazione. Quando si sposta su un altro file system, potrebbe avvenire una copia seguita dall'eliminazione dell'originale, quindi è necessario controllare lo spazio e il risultato. Per ulteriori dettagli sulle opzioni e sul comportamento, fare riferimento a il manuale mv di GNU coreutils .