Come cambiare le estensioni dei file tramite la riga di comando in Mac OS

Gli utenti della linea di comando potrebbero trovare utile modificare e rinominare l'estensione di un gruppo di file in una directory. Ad esempio, supponiamo di avere una serie di file con estensione ".txt", ma si desidera che tutte le estensioni dei file siano ".py". Questo è ciò che stiamo per dimostrare qui basandosi su semplici script di bash per cambiare un gruppo di estensioni di file sulla riga di comando di Mac OS / OS X, ma funzionerà anche con linux e altri sapori Unix.


Prima di iniziare, renditi conto che questo non sta cambiando un tipo di file, sta solo cambiando l'estensione del file. Inoltre, questo approccio walk-through utilizza intenzionalmente la riga di comando e si rivolge quindi a utenti più avanzati. Tuttavia, il terminale non è l'unico modo per farlo, quindi se questo è troppo avanzato o irrilevante per il tuo set di abilità utente, ricorda che Mac OS offre strumenti semplici per rinominare i file in Mac OS e le estensioni dei file batch change nel Finder pure, nessuno dei quali richiede la riga di comando. ok? Va bene per l'approccio a linea di comando usando un semplice script bash a una riga.

Tra l'altro dovresti sempre fare una copia e / o un backup dei file che stai modificando, in particolare se sei nuovo nella riga di comando. In caso contrario, il terminale potrebbe perdere dati, errori o errori di battitura, quindi non saltare i backup.

Come modificare tutte le estensioni di file in una directory tramite la riga di comando

Facciamo alcuni esempi. Nel primo esempio, cambieremo tutti i file nella presente directory di lavoro con l'estensione ".txt" e li cambieremo in ".py". Supponendo che tu sia nella directory in cui desideri modificare tutti i file nella directory corrente in una nuova estensione di file, ecco la sintassi da utilizzare:

for file in *.txt; do mv "$file" "${file%.txt}.py"; done

Nota: usa il carattere jolly * che significa qualsiasi cosa e ogni cosa nella directory corrente che corrisponde all'estensione di file "* .txt" verrà cambiata. Notare anche le diverse istanze di "txt" e l'istanza di "py", entrambe le quali si desidera modificare in base alle proprie esigenze.

Tutto ciò che sta facendo è creare un semplice loop in cui trovare i file che corrispondono al carattere jolly e all'estensione del file iniziale, quindi eseguire il comando "mv" per spostare (rinominare) quei file dall'estensione del file iniziale alla sostituzione. Abbastanza semplice, vero?

Facciamo un altro esempio, diciamo che abbiamo una collezione di file di immagine nella directory corrente con nomi di file come "blahblah.jpg.JPEG", ma in realtà vogliamo solo che abbiano tutti lo stesso nome di file del less ridondante e più facile da leggere “blazblah.jpeg”. In tal caso, la sintassi sarà simile alla seguente:

for file in *.jpg.JPEG; do mv "$file" "${file%.jpg.JPEG}.jpeg"; done

L'approccio della riga di comando alla modifica delle estensioni dei file è abbastanza veloce e le estensioni dei file verranno modificate rapidamente, senza finestre di avviso o conferme.

E per reiterare ancora una volta, questo non è per convertire alcun tipo di file o modificare altro che il nome dell'estensione del file.

Conoscere un modo migliore per cambiare un sacco di estensioni di file di file in una directory tramite la riga di comando? Voglio solo sfogliare qualche altro grande consiglio da riga di comando (vai qui)? Fateci sapere che ne pensate nei commenti!