Macで拡張子を変更する手順|名前を変えても中身は変わらない
mac 拡張子 変更で検索する人がつまずいている場所は、手順そのものではなく「いま画面に見えていない拡張子を、どこで変えるのか」という一点です。Finderで名前を書き換えても末尾が出てこない、変えたはずなのにアイコンが元のままになる、ターミナルからは違う名前で見えている。この記事では、Macの拡張子を表示の設定とファイル名の実体に分けて、1件だけ変える手順、まとめて変える手順、そして名前を変えたあとに開けなくなったときに戻す順番までを整理します。
Macの拡張子は、見えているかと付いているかが別の話
最初に切り分けるのは、拡張子が「付いていない」のか「付いているが見えていない」のかです。この2つを混ぜたまま作業すると、名前の末尾に.txtを足したつもりがreport.txt.txtになり、状況がさらに分かりにくくなります。
macOSは既定でファイル名の末尾を隠します。隠れているだけで、ファイル名そのものには拡張子が残っています。Appleの資料も、表示していない状態が標準であることをはっきり書いています。
通常、ファイル名拡張子はmacOSでは表示されませんが、必要に応じて表示させることができます。拡張子が表示されていなくても、macOSでは適切なアプリでファイルを開くことができます。 出典: support.apple.com
表示の設定は2つの層に分かれています。1つはファイル1件ごとに持っている「拡張子を非表示」という印で、もう1つはFinder全体に効く「すべてのファイル名拡張子を表示」という設定です。後者を入れると、個々のファイルで非表示の印が付いていても末尾まで出ます。後者を外したときだけ、ファイルごとの印の通りに表示が分かれます。
ターミナルで作業している人が混乱しやすいのは、シェルから見えるファイル名にはこの表示の印が効かないためです。lsの出力には常に拡張子まで出ます。Finderの一覧でreportと見えているファイルが、シェルではreport.numbersと並ぶのは正常な状態で、どちらかが壊れているわけではありません。作業の最初に表示を入れておくと、以降の食い違いが消えます。
1件だけ変えるなら、情報ウインドウの名前と拡張子を開く
対象が1件で、そのファイルの末尾だけを書き換えたい場合は、Finderの情報ウインドウが最短です。ファイルを選んでcommandキーとIキーを同時に押すか、ファイルメニューから情報を見るを選ぶと、専用のウインドウが開きます。
ファインダー上で拡張子を変更したいファイルを選択します。 ⌘ + I または、ファイルメニューから「情報を見る」を選択します。 開いたウィンドウの真ん中あたりに「名前と拡張子」と言うのがあるはずです。 そこで、拡張子を手動で変更して return。 確認のダイアログが出ますので、実行します。 出典: detail.chiebukuro.yahoo.co.jp
名前と拡張子の欄には、表示の設定に関係なく拡張子まで含んだ名前が入ります。ここで末尾を書き換えてreturnを押すと、Macは変更後の拡張子を使うのか、元の拡張子のままにするのかを聞いてきます。このダイアログは事故を止めるための確認で、意図通りなら新しい拡張子を使う側を選びます。
同じ欄には「拡張子を非表示」のチェックも並んでいます。1件だけ末尾を出したい、あるいは1件だけ隠したいときは、ここで切り替えます。Finder全体の設定を触らずに済むため、他のフォルダの見え方を変えたくない場面で使えます。
一覧上で名前を直接編集して末尾を書き換える方法もありますが、拡張子を表示していない状態では末尾がそもそも編集欄に出てこないため、.mdと打った文字が拡張子の前に入り込みます。1件の作業でも情報ウインドウを開いたほうが、結果が読める形で確定します。
すべてのファイルで拡張子を出す設定と、変更前の警告
繰り返し拡張子を触るなら、Finder側の設定を先に決めておくほうが早く片付きます。Finderをアクティブにしてから、Finderメニューの設定を開き、詳細のタブを選びます。ここに並ぶ項目のうち、作業に関係するのは2つです。
- すべてのファイル名拡張子を表示。入れると、ファイルごとの非表示の印を無視して末尾まで出ます
- 拡張子を変更する前に警告を表示。入れると、拡張子が変わる操作のたびに確認のダイアログが出ます
2つ目は、まとめて名前を書き換えるときに効きます。警告を切っていると、.csvを.txtに変える操作が無言で通るため、あとから履歴をたどる手掛かりが残りません。逆に、意図して何十件も変えるときには毎回止められて手が止まります。作業の前に入れて、終わったら戻す使い方が現実的です。
Appleは同じ資料で、名前を変えるときに拡張子まで書き換えることについて注意を添えています。
ファイルまたはフォルダの名前を変更する際は、そのファイル名拡張子を変更しないでください。変更すると、そのファイルの作成に使用したアプリで開くことができなくなる場合があります。 出典: support.apple.com
この注意は、拡張子を触ってはいけないという意味ではなく、拡張子を変えることとファイルの形式を変えることは別だという意味です。そこを分けて考えられていれば、変更の操作自体は日常の作業として扱えます。
まとめて変えるときは、Finderとシェルのどちらかに寄せる
対象が数十件を超えたら、1件ずつ情報ウインドウを開く作業は現実的ではありません。選べる道は主に3つで、どれを使うかは「元の名前を残したいか」と「失敗したときに戻せるか」で決まります。
1つ目はFinderの一括名称変更です。複数のファイルを選び、controlキーを押しながらクリックして名称変更を選ぶと、テキストを置き換える、テキストを追加する、フォーマットの3つの方式が出ます。拡張子を変えたいときはテキストを置き換えるを選び、検索文字列に.txt、置換文字列に.mdと入れます。この方式は拡張子が表示されている状態でないと末尾を置換対象にできないため、先の設定を入れてから使います。
2つ目はシェルのループです。元の名前の一部を計算して組み立てられるため、規則的な変換に向いています。
for f in *.txt; do mv -n "$f" "${f%.txt}.md"; done
mvに付けた-nは、同じ名前の行き先がすでにあるときに上書きしない指定です。同じフォルダにmemo.txtとmemo.mdが両方あるような場面で、片方が黙って消えるのを防げます。逆に上書きしてよい場面では-fを使いますが、-nと-fは後に書いたほうが効くため、両方を並べて書かないほうが読みやすくなります。
3つ目は、そのファイルを作ったアプリからの書き出しです。中身の形式まで変える必要があるときは、これが唯一の正解になります。次の節で扱います。
なお、まとめて変える前に、対象のフォルダをそのまま複製しておくと復旧の手が残ります。100件の名前を一度に書き換えたあとで元の対応表を作り直すのは、複製を1つ作る手間よりはるかに重い作業になります。
名前を変えても中身は変わらない。形式を変えるのは別の操作
拡張子の変更でいちばん誤解されているのが、ここです。末尾の文字列は、そのファイルをどのアプリで開くかを決めるための目印であって、ファイルの中身を書き換えるスイッチではありません。
.txtというのはファイルを識別しやすくする為の目安なので.txtを変更してもファイルの中身が変わることはありません
元々UNIXでは拡張子がありませんでしたが、それを分別しやすくするために付けているだけです
拡張子によって開くアプリが違うだけで適切なアプリで開けばたとえhoge.jpgにしてもテキストファルとして認識します 出典: detail.chiebukuro.yahoo.co.jp
つまり、PNG画像の末尾を.jpgに書き換えても、中身はPNGのままです。多くのアプリは中身を見て判断するため、そのまま開けてしまいます。一方で、拡張子だけを信用する相手に渡したときには読めないファイルとして扱われます。取引先に送ったファイルが開けないと言われる事故は、この食い違いから起きます。
形式まで変える必要があるときは、変換の機能を持つ相手に渡します。Appleの資料も、形式の変更はそのファイルを作ったアプリで行うよう案内しています。文章なら、標準テキストとリッチテキストの変換はテキストエディットが担当し、コマンドからはtextutilが同じ仕事をします。textutilが受け取れる形式はtxt、html、rtf、rtfd、doc、docx、wordml、odt、webarchiveで、-convertに形式名を渡すと書き戻します。画像はプレビューの書き出しか、コマンドならsipsが窓口です。
textutil -convert html memo.txt
この1行は、memo.txtからmemo.htmlを作ります。名前だけを.htmlに変えた場合と違い、中身がHTMLの構造を持った状態になります。拡張子の変更で解決する場面と、変換が必要な場面を見分ける基準は単純で、受け取る相手が中身を読むなら変換、名前の整理が目的なら拡張子の変更で足ります。
中身が何なのかを、拡張子ではなく実体で確かめる
拡張子を変えたあとに「これは本当に何のファイルなのか」を確かめる手は、Macに標準で入っています。名前を信用せず、中身の先頭にある印を読む道具です。
file report.md
mdls -name kMDItemContentType report.md
fileは、ファイルシステムの検査、magicの検査、言語の検査の順に試し、最初に当たったものを出します。画像やアーカイブのように先頭に決まった並びを持つ形式は、名前を何に変えても同じ答えが返ります。macOSに入っているものはバージョン5.41で、拡張子に頼らない判定の基準として使えます。
mdlsは、Spotlightが持っている属性を読み出します。kMDItemContentTypeには、macOSがそのファイルに割り当てた種類の識別子が入ります。Finderがどのアプリを結び付けているかは、この識別子を経由して決まるため、アイコンが変わらない原因を追うときはここを見ます。名前を変えた直後は古い値が残っていることがあり、その場合はファイルを別のフォルダへ移すか、Finderを開き直すと更新されます。
拡張属性が残っていないかも同時に確認できます。
ls -l@ report.md
末尾に@が付いていれば拡張属性があり、その名前が続く行に並びます。インターネットから受け取ったファイルには隔離の印が残っていることがあり、拡張子の問題ではなく、その印で開けない場合があります。名前と、種類の識別子と、拡張属性の3つを並べて読めば、どこで止まっているかはほぼ絞り込めます。
変えたあとに開けなくなったときに、先に戻す1か所
拡張子を変えたことでダブルクリックが効かなくなった場合、慌てて中身を疑う前に、開く相手の割り当てを見ます。情報ウインドウの「このアプリケーションで開く」の欄で、想定したアプリを選び直します。この種類のファイルをすべて同じアプリに向けたいときは、その下の「すべてを変更」を押します。逆に、いま選んでいる1件だけを別のアプリで開きたいなら、押さずに閉じます。
Appleは、それでも開けない場合の見方まで書いています。
特定のアプリでファイルを開くことができない場合は、そのファイルが破損しているか、そのアプリでは認識されない可能性があります。別のアプリで開いてみてください。 出典: support.apple.com
別のアプリで開けたなら、壊れているのはファイルではなく割り当てです。どのアプリでも開けないなら、拡張子ではなく中身の側を疑う順番になります。ここでfileの出力が元の形式を指しているなら、拡張子を元に戻すだけで復帰します。出力がdataのような一般的な答えに変わっているなら、転送の途中で欠けた可能性が残ります。
一括で変えたあとに気付いた場合は、同じ規則で逆向きのループを回せば戻せます。ただし、元の拡張子が複数混ざっていた並びを一括で1つに寄せてしまった場合、名前だけからは復元できません。作業前の複製が効いてくるのはこの場面です。
拡張子の作業で往復が増えている場所
拡張子を1つ変えるだけの作業でも、実際に見ている情報は3か所に散っています。Finderでファイルの位置と表示名を見て、ターミナルでfileやmdlsの答えを読み、必要なら変換の書き方を調べる。この3つが別々の窓に分かれていると、対象を選び直すたびに切り替えが入り、件数が増えるほど確認そのものが後回しになります。
フォルダとターミナルとAIが同じ窓にある状態なら、対象を選んだまま種類の識別子を読み、そのまま変換の1行を打ち、結果を同じ一覧で確かめられます。拡張子の作業は「対象を決める、実体を確かめる、名前を書き換える」の繰り返しなので、往復の回数がそのまま所要時間になります。
道具の側で何ができるかはできることに、Finderやほかのファイル管理との違いは他のファイル管理との比較にまとまっています。外出先から手元のMacに残した作業の続きを確かめる使い方はiPhone・iPadから続きを、日本語以外の環境で使う場合の範囲は対応言語に整理されています。費用の目安は料金、判断に迷いやすい点はよくある質問にあります。
まず変えるべきは、拡張子を触る前にFinderの表示を入れておくことと、変える対象が名前なのか形式なのかを先に決めることです。この2つが決まっていれば、拡張子の変更で壊れる場面はほとんど残りません。
よくある質問
拡張子を変えるとファイルは壊れますか?
名前の末尾が変わるだけで、中身は書き換わりません。壊れて見えるのは、変更後の拡張子に割り当てられたアプリがその中身を読めないためです。元の拡張子に戻せば元通りに開けます。中身の形式まで変えたいときは、テキストならtextutil、画像ならプレビューやsipsのように、変換の機能を持つ相手に渡します。
名前を変更しても拡張子が出てこないのはなぜですか?
macOSは既定でファイル名の末尾を隠しているためです。Finderの設定の詳細で「すべてのファイル名拡張子を表示」を入れると、全体で末尾まで出ます。1件だけ出したいときは、情報ウインドウの名前と拡張子の欄にある「拡張子を非表示」のチェックを外してください。
数十件の拡張子をまとめて変える方法はありますか?
Finderで複数選択して名称変更を選び、テキストを置き換える方式で末尾を置換できます。拡張子が表示されている状態でないと置換対象になりません。ターミナルなら for f in *.txt; do mv -n "$f" "${f%.txt}.md"; done のように回せます。作業前にフォルダを複製しておくと、戻す手が残ります。
拡張子を変えたのにアイコンが元のままです。どうすればよいですか?
Spotlightが持っている種類の識別子が古いまま残っている場合があります。mdls -name kMDItemContentType で現在の値を確認し、ファイルを別のフォルダへ移すかFinderを開き直すと更新されます。それでも変わらないときは、情報ウインドウの「このアプリケーションで開く」で割り当てを選び直してください。