ファイル名でフォルダに自動振り分けする方法
ファイル名をもとにフォルダへ自動で振り分ける方法を、WindowsとMacの両方で解説します。キーワード・接頭辞・正規表現によるルール、無料のスクリプト、ファイル名の一部からフォルダを作る方法までまとめました。
ファイル名をもとにフォルダへファイルを自動振り分けするには、invoiceのようなキーワード、IMG_のような接頭辞、INV-2026のようなパターンなど、名前を見て一致するフォルダへ移動するルールが必要です。WindowsとMacには標準の検索機能があり、一度きりの整理であればそれで対応できます。ファイルが今後も届き続けるなら、タイマーで動くスクリプトか、ルールベースのファイル整理ソフトが自動でやってくれます。
このガイドでは、2分でできる検索から、ファイルが届いた瞬間に動くルールまで、3つの方法すべてを扱います。また、複数のルールが同じファイルに一致した場合にどうなるか、そしてファイル名そのものから移動先フォルダを組み立てる方法という、ほとんどのガイドが省いている2点も取り上げるので、Acme_Invoice_0917.pdfはAcmeというフォルダをあらかじめ作らなくても、自分でその下に収まります。
ファイル名が、すでに手元にある最良の振り分けキーである理由
ファイル種類で振り分けても、そのファイルがPDFだということしかわかりません。そのPDFが請求書なのか、契約書なのか、搭乗券なのか、レシピなのかまではわかりません。そのすべてが同じ拡張子で届くため、まとめてPDFsという名前のフォルダに送っても、散らかりを終わらせるのではなく、ただ移すだけです。
たいてい、名前のほうがずっと多くを知っています。銀行はStatement_2026-08.pdfという名前で書き出します。カメラはDSC_0412.JPG、ドローンはDJI_0098.MP4という名前で書き出します。デザインツールはlogo-final-v3.pngという名前で書き出します。クライアントはAcme_brief_v2.docxを送ってきます。大学はCS101_Week3_Slides.pdfを公開します。これらの名前はどれもあなたのために選ばれたものではありませんが、それぞれにファイルの置き場所を示す単語や接頭辞が含まれています。名前ルールは、その部分を読み取って動作します。
名前は一貫していないこともあり、それが単純なスクリプトを壊す原因になります。同じ取引先が同じ月のうちにInvoice、invoice、INVを送ってくることもあります。これを解決するのは、大文字・小文字を区別しないマッチングと、複数の綴りを一度に受け入れるルールという2つです。どちらも方法3で扱います。
scan0043.pdfやdownload (3).pdf、Untitled document.docxのように名前が何も語らない場合、名前ルールでは対応できないので、代わりにファイルの中身のテキストを読み取るルールが必要になります。これについては、中身でフォルダに自動振り分けする方法という別のガイドで扱っています。使える名前を持つほとんどのファイルについては、名前を使うほうが速く、ファイルを開く必要もありません。
ファイルを名前で振り分ける3つの方法
- 検索して手作業で移動する。 無料で、両方のOSに標準搭載されており、たまったファイルを一度だけ片付けるにはうってつけです。
- タイマーで動くスクリプト。 無料で、新しいファイルにも対応しますが、名前が想定通りに一致しないとき、何も言わずに失敗します。
- ファイル整理ソフトの名前ルール。 フォルダを監視し、含む・で始まる・で終わる・正規表現のいずれかで一致を判定し、届いた瞬間にファイルを移動して、その記録を残します。
手間の少ない順に並んでいます。フォルダが一度きりの散らかりなら、上から始めてください。毎週同じ種類のファイルが届くなら、下から始めてください。
方法1:名前で検索して、一致したものを移動する
Windowsでは、File Explorerでフォルダを開き、右上の検索ボックスにキーワードを入力します。invoiceと入力すると名前のどこかにその単語を含むファイルがすべて見つかり、name:invoiceとすれば名前だけを対象にした検索になり、さらにext:pdfを加えるとPDFだけに絞り込めます。Ctrl+Aを押してすべての結果を選択し、Ctrl+Xで切り取り、移動先フォルダを開いてCtrl+Vで貼り付けます。
Macでは、Finderでフォルダを開き、Cmd+Fを押します。最初の条件を「名前」に設定し、「次を含む」を選んで、キーワードを入力します。この検索を繰り返し使う予定なら「保存」をクリックしてSmart Folderとして保存します。Cmd+Aで結果をすべて選択し、移動先フォルダへドラッグします。同じドライブ内の2つのフォルダの間でドラッグする場合はファイルが移動され、別のドライブへ強制的に移動したい場合はドラッグ中にCmdキーを押したままにします。
この方法には限界が一つあり、それも小さくありません。今存在するファイルにしか対応できません。来週の火曜日に届く3通の請求書は、また検索するまでDownloadsフォルダに置かれたままになります。Smart Folderは一致したものを表示するだけで、何かを移動することはありません。ファイルが継続的にたまっていくフォルダについては、この先を読み進めてください。
方法2:名前のパターンに一致するファイルを移動するスクリプト
スクリプトなら、同じ検索と移動をスケジュールに沿って行えます。Windowsでは、これをsort-by-name.ps1として保存します。
$src = "$HOME\Downloads"
$dst = "$HOME\Documents\Invoices"
New-Item -ItemType Directory -Force $dst | Out-Null
Get-ChildItem $src -File |
Where-Object { $_.Name -match 'invoice.*\.pdf$' } |
Move-Item -Destination $dst
続けてTask Schedulerを開き、powershell.exeを-ExecutionPolicy Bypass -File C:\Scripts\sort-by-name.ps1という引数で起動する基本タスクを作成し、トリガーを10分おきの繰り返しに設定します。PowerShellの-match演算子は大文字・小文字を区別しないため、InvoiceとINVOICEのどちらも一致します。
MacやLinuxなら、同じことが1行で済みます。
find ~/Downloads -maxdepth 1 -type f -iname '*invoice*.pdf' -exec mv -n {} ~/Documents/Invoices/ \;
cronやlaunchdエージェントから10分おきに実行してください。-nameではなく-inameを使わないと、invoice.pdfという名前のファイルがInvoiceというパターンをすり抜けてしまいます。最近のmacOSでは、スケジュールされたジョブが初めてDownloadsに触れるとき、TerminalやcronにDownloadsへのアクセスを許可するよう求められることもあります。
スクリプトでうまくいかなくなる点は3つあり、しかもそれは静かに起こります。
- 途中までのダウンロード。 ブラウザはまず、Chromeなら
.crdownload、Firefoxなら.partという一時ファイルに書き込み、ダウンロードが完了するとリネームします。*invoice*というパターンはこの一時ファイルにも一致してしまい、ダウンロードの途中で移動してしまいます。上記どちらのスクリプトもそうしているように、パターンには必ず最終的な拡張子を含めてください。同じ問題はAutomatorのフォルダアクションでも起こり、これはフォルダ間でファイルを自動的に移動する方法で扱っています。 - 名前の衝突。 移動先に同じ名前のファイルがすでに存在する場合、
Move-Itemはエラーで停止します。mv -nは何も言わずにスキップします。どちらの場合も、ファイルはDownloadsに残ったままで、何も知らせてくれません。 - ログがない。 ファイルが見当たらなくなっても、スクリプトが移動したのか、どこに置いたのか、なぜそうしたのかを示す記録は残りません。フォルダのタイムスタンプから推測して調べ直すことになります。
スクリプトが向いているのは、フォルダが一つ、パターンが一つ、そして取引先が命名を変えたときに自分で編集できる人がいる場合です。それ以上の規模になると、メンテナンスのコストは急に増えていきます。
方法3:ファイル整理ソフトの名前ルール
ルールベースのファイル整理ソフトは、スクリプトの代わりに、このフォルダを監視し、この名前に一致したら、そこへ移動する、というフォームに置き換えます。MacではHazelがこれを行い、WindowsではFile Jugglerと無料のDropItがこれを行います。以下の例では、両方のOSで動き、ルールの仕組みが一文で説明できるほどシンプルだという理由から、File Arborを使います。
File Arborには、名前に含む、名前が〜で始まる、名前が〜で終わる、名前が正規表現に一致という4つの名前条件があります。4つとも大文字・小文字を区別しません。1つの条件には複数の値を設定でき、そのどれか1つでも一致すれば条件が満たされるので、invoice, inv-, rechnungは1つの条件であって3つのルールではありません。ルールは最大5つまで条件を持つことができ、ルール内のすべての条件が真でなければならず、これが「名前がinvoiceを含む、かつ拡張子がpdfである」という言い方の意味です。ルールが一致すると、ファイルは移動先フォルダへ移動し、その移動はHistory画面に記録され、あとから取り消すこともできます。
典型的なDownloadsフォルダを名前で振り分けるルールセットを紹介します。どのルールも、声に出して言える一文にまとめてあります。
ルール1 — 請求書と領収書、あらゆる綴り、PDFのみ。
- 監視対象:
Downloads - 条件:名前に
invoice, inv-, receipt, rechnungを含む、かつ拡張子がpdf - 移動先:
Documents/Finance/<Year>/Invoices
拡張子条件があるおかげで、invoice-questions.docxという下書きメールがfinanceフォルダに紛れ込むことはありません。<Year>トークンはファイルの日付から読み取られるので、来年1月のフォルダも自動的にできあがります。
ルール2 — 接頭辞によるカメラ・スマートフォンのファイル。
- 監視対象:
Downloads - 条件:名前が
IMG_, DSC_, DJI_, PXL_のいずれかで始まる - 移動先:
Pictures/Camera/<Date:yyyy-mm>
どのカメラメーカーも固定の接頭辞を使うため、「〜で始まる」が適切な条件になります。report-IMG_2024.pdfというファイルは、接頭辞が先頭にないため対象になりません。
ルール3 — 接尾辞による成果物。
- 監視対象:
Work/Exports - 条件:名前が
-final, _final, -approvedのいずれかで終わる - 移動先:
Work/Deliverables
「〜で終わる」は拡張子を除いた名前を比較するので、-finalはlogo-final.pngにもbrief-final.docxにも同じように一致します。
ルール4 — 名前の最初の単語によるクライアントファイル。
- 監視対象:
Downloads - 条件:名前が正規表現
^[a-z]+_.+_に一致 - 移動先:
Clients/<NamePart:1>/<NamePart:2>
これは名前からフォルダを組み立てるルールで、この後専用のセクションで詳しく説明します。
ルール5 — それ以外の書類すべて。
- 監視対象:
Downloads - 条件:拡張子が
pdf, docx, xlsx - 移動先:
Documents/_Inbox
キャッチオール・ルールは一番最後に置かれ、名前条件を持ちません。見覚えのない名前の書類でも、Downloadsから抜け出して、週に一度は目を通す場所にたどり着けるようにするためのものです。
無料プランのFile Arborは拡張子だけでマッチし、監視フォルダは1つ、ルールは2つまでで、ルール5と種類ベースのルール1つ分をカバーします。名前条件、ルールごとの複数条件、Auto Modeは、一度払い切りで$24.99、アップデートは永年無料のProに含まれており、詳しい違いは料金ページにあります。
どの名前条件を使うべきか
| 条件 | 使う場面 | 値の例 | 対象になる例 |
|---|---|---|---|
| 名前に含む | キーワードが名前のどこにあってもよい場合 | invoice | Acme_invoice_0917.pdf、INVOICE-2231.pdf |
| 名前が〜で始まる | ツールやカメラが固定の接頭辞を付ける場合 | Screenshot | Screenshot 2026-09-12 at 10.14.03.png |
| 名前が〜で終わる | 自分やチームがステータスの接尾辞を付ける場合 | -final | logo-final.png、deck-final.pptx |
| 名前が正規表現に一致 | 固定の単語ではなくパターンに従う場合 | ^INV-\d{4,} | INV-2231.pdf、inv-20260912.pdf |
まず「含む」を試してください。もっとも寛容な条件で、実際の名前の多くをカバーします。キーワードが無関係な名前の途中にも出てくる場合は「〜で始まる」を使います。「IMGを含む」というルールはreimagined-plan.pdfまで拾ってしまいますが、「IMG_で始まる」ならそういうことは起きません。自分のチームが管理する接尾辞には「〜で終わる」を使います。単語だけでは対応できないときにだけ正規表現を使います。
実際によく使われる正規表現パターンは、次の4つでカバーできます。
^INV-\d{4,}— 請求書番号。名前の先頭にある、INV-という文字列と、それに続く4桁以上の数字。^[A-Z]{2,4}\d{3}— CS101やMATH221のような、名前の先頭にある講義コード。\d{4}-\d{2}-\d{2}— 名前のどこかにある、2026-09-12のような形式の日付。(v|version)\d+— v3やversion12のようなバージョン表記。
マッチングは大文字・小文字を区別しないため、[A-Z]は小文字にも一致します。File Arborは、アプリをフリーズさせかねない構文がパターンに含まれていないかをチェックして拒否するので、他の場所では問題ないパターンがここでは弾かれることがあります。正規表現がはじめてなら、初心者向けの正規表現ファイル整理ガイドでファイル名を例に基本構文を解説しています。
ファイル名からフォルダを組み立てるには
File Arborのルールにある移動先パスはトークンに対応しており、そのうち2つはファイル名を読み取るものです。
<NamePart:n:delimiter>は、区切り文字で名前を分割した後のn番目の部分を取得します。区切り文字は、指定しなければアンダースコアになります。Acme_Invoice_0917.pdfの場合、<NamePart:1>はAcme、<NamePart:2>はInvoiceです。したがって、移動先をClients/<NamePart:1>/<NamePart:2>とするとClients/Acme/Invoice/に解決され、どちらのフォルダも存在しなければ作成されます。acme-invoice-0917.pdfのようにハイフン区切りの名前の場合は、代わりにハイフンで分割する<NamePart:1:->と書きます。
<Name:start:length>は、名前から固定長の一部を取得します。2026-09-12_report.pdfに対する<Name:1:4>は2026を返し、日付で始まる名前から年フォルダを作る手早い方法になります。
この仕組みが誤動作しないようにする、2つのポイントがあります。
- ファイル名は変わりません。 トークンが決めるのはフォルダパスの形だけです。
Acme_Invoice_0917.pdfはClients/Acme/Invoice/に届いても、名前はやはりAcme_Invoice_0917.pdfのままです。File Arborは意図的にファイルをリネームしません。リネームが必要な場合は、ルールの一部としてHazelやFile Jugglerがそれを行えます。 - ルールをパターンで保護する。 名前にアンダースコアがない場合、
<NamePart:2>は空になり、その空の部分はパスから取り除かれるため、ファイルは想定より1つ上の階層に置かれてしまいます。上記のルール4では、このトークンを正規表現^[a-z]+_.+_と組み合わせており、これはアンダースコアが2つ以上ある名前にしか一致しません。その構造を持たないファイルは、代わりにキャッチオール・ルールに落ちます。
トークンという方式は、振り分けの鍵になる部分を先頭に置くという命名習慣にご褒美をくれます。Acme_Invoice_0917.pdfは自分で振り分けられますが、Invoice 0917 (Acme).pdfはそうなりません。自分のエクスポート、プロジェクト開始時のクライアント、同僚のスキャナー設定など、名前に影響を与えられる立場にあるなら、ファイル命名規則ガイドにあるテンプレートを使えば、これらのルールはどれもずっとシンプルになります。
2つのルールが同じファイルに一致したらどうなるか
リストの中で最初に一致したルールが適用され、各ファイルは1回のパスにつき1度だけ処理されます。Acme_Invoice_0917.pdfは、ルール1(invoiceを含み、PDFである)、ルール4(アンダースコアが2つある)、ルール5(PDFである)のすべてに一致します。この3つのルールのうち、もっとも上にあるものが送り先を決めます。
つまり、順番は後付けではなく、設計上の判断だということです。
- 条件が2つ以上あるルールは、条件が1つのルールより上に置きます。「invoiceを含む、かつacmeを含む」は「invoiceを含む」より上に置きます。
- 範囲の狭い条件のルールは、範囲の広いルールより上に置きます。「IMG_で始まる」は「IMGを含む」より上に置きます。
- キャッチオール・ルールは一番最後に置き、名前条件はまったく持ちません。
Auto Modeをオンにする前に、一度手動でルールを実行し、History画面を開いてください。すべてのファイルが、それを移動したルールとともに一覧表示されます。間違ったフォルダに送られたファイルがあれば、それはルールの位置が間違っているということなので、ルールを上下にドラッグすれば直せます。並べ替えている間は、Undoでファイルを元に戻せます。
名前ルールにできないこと
名前ルールが読み取るのは名前だけで、それ以外は何も見ません。ファイルを開くことはないので、scan0043.pdfという名前のPDFは、中に何が書かれていても名前ルールには見えません。これは内容ルールの出番であり、この2種類のルールは同じリストに共存できます。中身を比較して重複を検出することもなく、名前が違う同一の写真2枚は、名前ルールにとっては別々の2つのファイルです。そして名前を直すこともしません。ルールはIMG_0412.JPGを日付フォルダへ振り分けられますが、そこに届いてもファイルの名前はやはりIMG_0412.JPGのままです。
もう一つ、細かいところでつまずく人がいます。「〜で終わる」は拡張子を除いた名前を比較するため、.pdfという値は何にも一致しません。拡張子に一致させたい場合は拡張子条件を使ってください。これは無料プランで使える唯一の条件でもあります。
どの方法を選ぶべきか
「フォルダが今まさに散らかっていて、新しく届くものはあまりない」 → 方法1です。検索して、すべて選択して、移動する。10分、ソフト不要です。
「フォルダは1つ、パターンも1つ、スクリプトの編集も苦にならない」 → 方法2です。上記のPowerShellまたはfindのワンライナーを、10分おきにスケジュール実行します。パターンには拡張子を含め、スクリプトが見逃したファイルがないか週に一度フォルダを確認してください。
「毎週、いろいろな送り主から何種類ものファイルが届く」 → 方法3です。具体的なものから一般的なものへ並べた5つの名前ルールと、一番下のキャッチオール・ルール、そしてオンにしたAuto Mode。File Arborをダウンロードして、まずルール1を作りましょう。残りも同じ形でついてきます。
「名前が役に立たない」 → どちらでもありません。テキストレイヤーを持つPDFや書類には内容ルールを、自分やチームが作るものすべてには命名規則を使ってください。
「Macを使っていて、すでにHazelを持っている」 → Hazelは方法3のすべてを行え、さらにリネームもできます。この用途のために乗り換える理由はありません。
「Windowsを使っていて、予算がない」 → DropItはワイルドカードパターンで名前をマッチでき、無料です。インターフェースを覚えるのに一晩はかかると思っておくか、スクリプトを使ってください。
名前ベースのフォルダを、この先も整理された状態に保つには
名前ルールが正確であり続けるのは、名前が予測可能である間だけなので、メンテナンスの大部分は命名側の問題です。
自分がコントロールできる名前では、振り分けの鍵になる部分を先頭に置き、もっとも多くファイルを送ってくる2、3人にも同じようにお願いしましょう。キックオフのときに「ファイル名の先頭にプロジェクトコードを付けてください」とひとこと伝えるだけで、1年分の自動振り分けが手に入ります。
新しい綴りが出てきたら、新しいルールを書くのではなく、既存のルールに値を追加してください。ルール1はinvoiceから始まり、数か月かけてinv-、receipt、rechnungが加わりましたが、今でも1つのルールのままです。
キャッチオールの受信箱は小さく保ちましょう。金曜日に5分かけてDocuments/_Inboxを片付ければ、ルールが見逃した名前がわかり、その見逃しの多くは既存ルールに追加すべき新しい値です。
最初の1週間が終わったら、一度History画面を確認してください。あとは、ファイルが想定した場所にないときまで気にしなくて構いません。ルールの順番さえ正しければ、そういうことはめったに起きません。
FAQ
ファイル名をもとに、ファイルを自動的に移動できますか?
はい。WindowsとMacには標準の検索機能があり、名前でファイルを見つけることはできますが、新しく届いたファイルを自動的に移動することはありません。数分おきに実行するスクリプトなら、名前がパターンに一致するファイルを移動できます。File Arborのようなルールベースのファイル整理ソフトはフォルダを監視し、名前が指定した文字列を含む、で始まる、で終わる、またはパターンに一致するファイルが届いた瞬間に移動します。
Windowsで、名前に特定の単語を含むファイルをフォルダへ移動するにはどうすればいいですか?
一度きりの片付けなら、File Explorerの検索ボックスにその単語を入力し、表示された結果をすべて選択して、切り取り、目的のフォルダに貼り付けます。これを自動的に続けたい場合は、Task Scheduler経由でPowerShellスクリプトを実行して名前がその単語に一致するファイルをすべて移動するか、ファイル整理ソフトで名前に含む条件のルールを作成して、ファイルが届いた瞬間に移動が実行されるようにします。
名前でファイルを振り分けると、ファイル名は変更されますか?
File Arborでは変更されません。名前ルールが決めるのはファイルの移動先フォルダだけで、ファイルは元の名前のまま残ります。移動先に同じ名前のファイルがすでに存在する場合は、上書きされるのではなく、新しいファイルに接尾辞が付いてリネームされます。Mac版のHazelやWindows版のFile Jugglerなら、ルールの一部としてファイル名を変更することもできます。
ファイル名のマッチングは、大文字・小文字を区別しますか?
いいえ、File Arborでは区別されません。名前に含む、で始まる、で終わる、正規表現のいずれの条件も大文字・小文字を区別しないため、invoiceという値はInvoice、INVOICE、invoiceのすべてに一致します。PowerShellのmatch演算子も標準で大文字・小文字を区別しません。MacやLinuxでは、findコマンドのnameオプションではなくinameオプションを使ってください。そうしないと、小文字のファイルが大文字始まりのパターンをすり抜けてしまいます。
ルールで、ファイル名の一部から移動先フォルダを作ることはできますか?
はい。File Arborの移動先パスは、ファイル名を読み取るトークンに対応しています。NamePartは、区切り文字で分割した名前のn番目の部分を取得するので、Acme_Invoice_0917.pdfは、それらのフォルダをあらかじめ作成しなくてもClients/Acme/Invoiceへ振り分けられます。Nameは、指定した位置から固定文字数を取得します。フォルダは必要に応じて自動的に作成され、ファイル名自体が変わることはありません。
2つのルールが同じファイルに一致すると、どうなりますか?
リストの中で最初に一致したルールが適用され、ファイルは1回のパスにつき1度だけ処理されます。具体的なルールを上に、一般的なルールを下に置いてください。クライアント名とinvoiceという単語の両方を必要とするルールは、invoiceだけを必要とするルールより上に置くべきです。一番下にキャッチオール・ルールを置いておけば、どれにも一致しなかったファイルもそのまま放置されず、受信箱フォルダに入ります。
まとめ
ほとんどのファイルは、届いた時点ですでに置き場所を語る名前を持っています。一度きりの検索でたまった分は片付きます。メンテナンスする意志があれば、スケジュールスクリプトで1つのフォルダをきれいに保てます。名前ルールなら、あらゆるフォルダ、あらゆる綴り、そして自分が見ていない間に届いたすべてのファイルに対して同じ仕事をこなし、何をしたかも記録してくれます。
まずは、自分のDownloadsフォルダにいちばんよく出てくるキーワードひとつから始めましょう。File Arborをダウンロードして、「名前にその単語を含めば、そこへ移動する」というルールを追加し、一度実行して、History画面を確認してください。それでうまくいけば(実際にうまくいきます)、残り4つのルールは、それぞれ数分で作れます。無料版でも拡張子ルールが動く様子は十分に確認できます。名前マッチングとAuto Modeが何を追加するのかは、料金ページをご覧ください。
