Comment faire pour modifier les extensions de fichiers de fichiers via la ligne de commande dans Mac OS

Les utilisateurs de la ligne de commande peuvent trouver utile de modifier et de renommer l'extension de fichier d'un groupe de fichiers dans un répertoire. Par exemple, supposons que vous ayez un lot de fichiers avec l'extension de fichier ".txt" mais que vous souhaitiez que toutes ces extensions soient ".py" à la place. C'est ce que nous allons démontrer ici en nous appuyant sur un simple script bash pour modifier un groupe d'extensions de fichiers sur la ligne de commande de Mac OS / OS X, mais cela fonctionnera également sous Linux et d'autres versions d'Unix.


Avant de commencer, sachez que cela ne change pas le type de fichier, il ne fait que changer l'extension du fichier. En outre, cette approche pas à pas utilise intentionnellement la ligne de commande et est donc destinée aux utilisateurs plus avancés. Cependant, le terminal n'est pas le seul moyen de le faire, et si cela est trop avancé ou non pertinent pour vos compétences utilisateur, rappelez-vous que Mac OS propose des outils simples pour renommer par lot les fichiers sous Mac OS et modifier les fichiers par lots. Finder aussi, qui ne nécessite aucune ligne de commande. D'accord? Bien sur l'approche en ligne de commande en utilisant un simple script bash d'une ligne.

En passant, vous devriez toujours faire une copie et / ou une sauvegarde des fichiers que vous modifiez, en particulier si vous êtes nouveau sur la ligne de commande. Ne pas le faire pourrait entraîner une perte de données, le terminal est impitoyable pour les fautes de frappe ou d'erreurs, alors ne sautez pas vos sauvegardes.

Comment modifier toutes les extensions de fichier dans un répertoire via la ligne de commande

Prenons quelques exemples. Dans le premier exemple, nous allons changer tous les fichiers du répertoire de travail actuel avec l'extension ".txt" et les remplacer par ".py". En supposant que vous êtes dans le répertoire où vous souhaitez changer tous les fichiers dans le répertoire en cours à une nouvelle extension de fichier, voici la syntaxe à utiliser:

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

Notez que ceci utilise le joker * signifiant que tout et n'importe quoi dans le répertoire courant correspondant à l'extension de fichier "* .txt" sera changé. Notez également les instances multiples de "txt" et l'instance de "py" que vous souhaitez modifier pour répondre à vos besoins.

Tout ce que fait est de créer une simple boucle où les fichiers correspondant au caractère générique et l'extension du fichier initial sont trouvés, puis en exécutant la commande "mv" pour déplacer (renommer) ces fichiers de l'extension de fichier initiale au remplacement. Assez simple, non?

Prenons un autre exemple, disons que nous avons une collection de fichiers image dans le répertoire courant avec des noms de fichiers comme "blahblah.jpg.JPEG" mais nous voulons juste qu'ils aient tous le même nom de fichier de moins redondant et plus facile à lire "Blazblah.jpeg". Dans ce cas, la syntaxe ressemblerait à ceci:

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

L'approche de la ligne de commande pour changer les extensions de fichiers est assez rapide et les extensions de fichiers seront changées rapidement, sans aucune boîte de dialogue d'avertissement ou de confirmation.

Et pour réitérer encore une fois, il ne s'agit pas de convertir des types de fichiers ou de modifier autre chose que le nom de l'extension du fichier.

Connaître une meilleure façon de changer un tas d'extensions de fichiers de fichiers dans un répertoire via la ligne de commande? Je veux juste passer en revue d'autres bons conseils en ligne de commande (allez ici)? Faites-nous savoir vos pensées dans les commentaires!