Watch

Mac OSでコマンドラインからファイルの拡張子を変更する方法

Mac OSでコマンドラインからファイルの拡張子を変更する方法

macOSのターミナルを使えば、ディレクトリ内のすべてのファイル拡張子を簡単に変更できます。

コマンドラインユーザーにとって、ディレクトリ内の複数のファイルの拡張子を一括で変更したり、名前を変更したりできると便利です。例えば、「.txt」という拡張子を持つファイルが複数あるとします。これらをすべて「.py」に変更したいとします。ここでは、シンプルなbashスクリプトを使ってMac OS / OS Xのコマンドラインで複数のファイル拡張子を変更する方法を説明します。この方法はLinuxやその他のUnix系OSでも動作します。


始める前に、これはファイルの種類を変更するのではなく、ファイル拡張子を変更するだけであることにご注意ください。また、このウォークスルー方式では意図的にコマンドラインを使用しているため、上級ユーザー向けです。ただし、ターミナルが唯一の方法ではありません。もしこれが高度すぎる、あるいはユーザーのスキルレベルに合わない場合は、Mac OSには、Mac OSでファイル名を一括変更したり、Finderでファイル拡張子を一括変更したりするためのシンプルなツールが用意されていることを思い出してください。どちらもコマンドラインを全く必要としません。それでは、シンプルな1行のbashスクリプトを使ったコマンドライン方式に進みましょう。

ちなみに、変更するファイルは必ずコピーまたはバックアップを作成してください。特にコマンドラインを初めて使用する場合は、必ずコピーまたはバックアップを作成してください。バックアップを怠るとデータが失われる可能性があります。ターミナルはタイプミスや間違いを許容しないため、必ずバックアップを作成してください。

コマンドラインからディレクトリ内のすべてのファイル拡張子を変更する方法

いくつか例を見てみましょう。最初の例では、現在の作業ディレクトリにある拡張子「.txt」のすべてのファイルを「.py」に変更します。現在のディレクトリにあるすべてのファイルを新しいファイル拡張子に変更したいディレクトリにいると仮定すると、使用する構文は以下のとおりです。

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

ここでワイルドカード * を使用していることに注意してください。これは、現在のディレクトリ内にある「*.txt」というファイル拡張子に一致するすべてのファイルが変更されることを意味します。また、「txt」が複数回出現し、「py」が1回出現していることにも注意してください。どちらも要件に合わせて変更する必要があります。

これは、ワイルドカードと最初のファイル拡張子に一致するファイルを検索する単純なループを作成し、「mv」コマンドを実行して、それらのファイルを最初のファイル拡張子から置換ファイル拡張子に移動(名前変更)するだけです。とてもシンプルですよね?

別の例を見てみましょう。カレントディレクトリに「blahblah.jpg.JPEG」のようなファイル名の画像ファイルがいくつかあるとします。しかし、実際には、それら全てを「blazblah.jpeg」という冗長性が少なく読みやすい名前にしたいとします。この場合、構文は次のようになります。

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

ファイル拡張子を変更するためのコマンドライン アプローチは非常に高速で、警告ダイアログや確認なしでファイル拡張子がすぐに変更されます。

もう一度繰り返しますが、これはファイルの種類を変換したり、ファイル拡張子名以外のものを変更したりするものではありません。

コマンドラインを使ってディレクトリ内のファイルの拡張子を一括変更する、もっと良い方法をご存知ですか?他の便利なコマンドラインのヒントも知りたいですか?(こちらへどうぞ)ぜひコメント欄でご意見をお聞かせください!