サブフォルダのファイルを1つのフォルダに一括移動する方法
サブフォルダのファイルを1つのフォルダに一括移動する方法を、エクスプローラー、PowerShell、Finder、ターミナルで解説します。同名ファイルの扱いと、残った空のフォルダの片付け方、自動化の手順もまとめました。
サブフォルダのファイルを1つのフォルダに一括移動するには、メインフォルダを検索してファイルをすべて表示し、結果を選んでまとめて移動します。エクスプローラーでもFinderでもでき、PowerShellやターミナルの1行でも同じことができます。つまずくのは、同じ名前のファイルと、残る空のフォルダです。このガイドでは、その両方を扱います。
最後の方法は、スマートフォンの取り込みが毎日新しいフォルダを作るように、すぐにいっぱいになるフォルダ向けです。
フォルダを平らにする前に決める3つのこと
同じ名前。 日付フォルダが140個あるD:\Photos\Exportがあり、2台のカメラで撮ったとします。どちらのカメラもIMG_0001.jpgから番号を振るので、移動先で2つのファイルが同じ名前になろうとします。番号を付けて両方を残すか、2つ目をスキップするかを決めておきます。以下の方法は、どれもここでの動きが違います。
フォルダ名には情報がある。 アルバム、顧客、旅行、日付など、ファイルを1か所にまとめると、その情報は失われます。フォルダ名をファイル名に入れる(File Arborならできます。方法5を参照)か、構造を残してください。
ファイルの行き先。 メインフォルダそのものか、新しいフォルダです。同じドライブ内の移動は一瞬です。ドライブをまたぐと、ファイルはコピーされてから元が削除されるので、時間がかかります。大切なファイルで、コマンドを使うつもりなら、先にフォルダ全体をコピーし、そのコピーを平らにしてください。
サブフォルダからファイルを移動する5つの方法を比較
| 方法 | 対応OS | 同名のファイル | そのあとの空のサブフォルダ | 取り消し | 自動で繰り返す |
|---|---|---|---|---|---|
| エクスプローラーの検索 | Windows 10・11 | エクスプローラーが、置き換え、スキップ、比較して両方残す、のどれかを尋ねる | 残る | 直後ならCtrl+Z | いいえ |
| PowerShell | Windows 10・11 | 2つ目のファイルはエラーになり、サブフォルダに残る | 残る | なし | いいえ |
| Finderの検索 | macOS | Finderが、両方を残す、中止、置き換え、のどれかを尋ねる | 残る | 直後なら編集メニューから取り消す | いいえ |
| ターミナル | macOS | 2つ目のファイルはサブフォルダに残る(mv -n) | 残る | なし | いいえ |
| File Arbor(Pro) | WindowsとMac | 番号を付けて名前を変える:IMG_0001 (1).jpg | 任意:ごみ箱(Macではゴミ箱)へ | 実行後に元に戻す、または履歴でファイルごとに | はい(スケジュール) |
標準の方法には、空になったサブフォルダを削除するものはありません。その残りについては、空のフォルダを削除する方法を参照してください。
方法1:エクスプローラーでサブフォルダのファイルをすべて移動する(Windows 11・10)
- メインフォルダを開きます。たとえば
D:\Photos\Exportです。 - 右上の検索ボックスをクリックし、
*と入力してEnterを押します。エクスプローラーが、このフォルダとその中のサブフォルダをすべて検索します。 - 詳細表示に切り替え、種類の列をクリックします。サブフォルダ(「ファイル フォルダー」)がファイルと分かれて、まとまって並びます。
- 最初のファイルをクリックし、最後のファイルをShiftを押しながらクリックして、Ctrl+Xを押します。
- 移動先(メインフォルダそのものか、新しいフォルダ)に移動して、Ctrl+Vを押します。
同じ名前のファイルがすでにあると、エクスプローラーが、置き換えるか、スキップするか、2つを比較するかを尋ねます。比較のウィンドウで両方のバージョンにチェックを入れると、両方が残り、移動したファイルには番号が付きます。移動の直後にCtrl+Zを押せば、取り消せます。
数万ファイルになると、エクスプローラーは遅くなります。隠しファイルは、隠しファイルを表示しているときしか現れません。そして、空になったサブフォルダは残ります。
方法2:PowerShellでサブフォルダのファイルをメインフォルダに移動する
パスを自分のものに置き換えます。末尾にバックスラッシュは付けません。
$root = "D:\Photos\Export"
Get-ChildItem -LiteralPath $root -File -Recurse |
Where-Object { $_.DirectoryName -ne $root } |
Move-Item -Destination $root
このコマンドは、フォルダの下にあるファイルをすべて列挙し、すでにメインフォルダにあるものを除いて、残りをメインフォルダに移動します。何も移動せずにプレビューするには、最後の行の末尾に-WhatIfを付けます。
メインフォルダにすでに同じ名前があるファイルは、上書きされません。Move-Itemは、ファイルがすでに存在するというエラーで拒否し、そのファイルはサブフォルダに残ります。名前を変えて、もう一度コマンドを実行してください。desktop.iniやThumbs.dbのような隠しのシステムファイルは、そのままの場所に残ります。Windows 11で検証したところ、同名のファイルはそのエラーとともにサブフォルダに残り、desktop.iniも動きませんでした。
1つ注意があります。移動ではなくコピーしたいときに、Move-ItemをCopy-Itemに置き換えないでください。Copy-Itemは、同名のファイルを確認なしに上書きします。元のファイルを残したいなら、先にフォルダ全体をコピーし、そのコピーを平らにします。
方法3:Finderの検索でMacのフォルダを平らにする
- Finderでメインフォルダを開き、⌘Fを押します。
- 検索の範囲を「このMac」ではなくそのフォルダの名前にして、結果がこのフォルダとそのサブフォルダだけから出るようにします。
- 検索条件に種類を選び、画像、PDF、ミュージック、ムービー、書類など、集めたいファイルの種類を指定します。種類を指定すると、フォルダそのものが結果に入りません。
- ⌘Aを押し、続けて⌘Cを押します。
- 移動先のフォルダを開いて、⌥⌘Vを押します。コピーではなく、項目が移動されます。
名前がすでに使われていると、Finderが、両方を残すか、中止するか、置き換えるかを尋ねます。両方を残すと、名前に番号が付きます。移動の直後に、編集メニューから取り消すと、移動が元に戻ります。
Finderの検索はSpotlightに頼っているので、インデックスされていないフォルダでは何も返りません。その場合はターミナルを使ってください。空になったサブフォルダは残ります。
方法4:ターミナルでサブフォルダのファイルを移動する(Mac)
メインフォルダに移動してから、findを実行します。
cd ~/Pictures/Export
find . -mindepth 2 -type f ! -name .DS_Store -exec mv -n {} . \;
各部分の働きです。
-mindepth 2は、サブフォルダの中のファイルだけを選ぶので、すでにメインフォルダにあるファイルはそのままです。.DS_Storeを除外すると、Finderの隠しの表示設定ファイルを飛ばします。mv -nは決して上書きしないので、名前がすでに使われているファイルは、サブフォルダに残ります。
プレビューするには、-exec mv -n {} . \;の代わりに-printを付けて、同じ行を実行します。
find . -mindepth 2 -type f ! -name .DS_Store -print
一覧が正しければ、本番のコマンドを実行し、そのあと空のフォルダのガイドにあるターミナルのコマンドで、空のサブフォルダを削除します。
方法5:File Arborでフォルダを自動で平らにする
方法1から4は、一度きりの作業です。フォルダに新しいサブフォルダが入り続けるなら、毎週同じ手順を繰り返すことになります。たとえば、毎日フォルダを作るカメラの取り込み、講座のダウンロード、展開したアーカイブ、日付ごとに仕分けるスキャナです。
File Arborは、実行のたびにそれを行い、同じ名前を処理し、空になったフォルダをごみ箱に移動することもできます(1.3.3の新機能)。ルール型でAIは使わず、すべてローカルで動きます。サブフォルダの走査とスケジュールモードはProの機能です。
- フォルダを追加をクリックして、メインフォルダを選びます。たとえば
D:\Photos\Exportか~/Pictures/Exportです。 - フォルダカードでサブフォルダも対象にするにチェックを入れます。手動モードとスケジュールモードで使えます。
- まとめて置くを選び、空のフォルダをごみ箱に移動にチェックを入れます。
- ルールを追加をクリックします。拡張子が次のファイルを選んで
.jpg、.jpeg、.heic、.pngを追加し、フォルダに移動を選んで、移動先にAll photosと入力します。種類を問わずすべてのファイルが対象なら、代わりに名前が次のパターンに一致するファイルにパターン.を指定します。 - 実行を押します。何かが動く前に、最初の走査を確認のダイアログに、移動されるファイルの数、フォルダの数、走査の深さ、そして移動の例が表示されます。
- 繰り返したいときは、フォルダをスケジュールに切り替えます。たとえば毎日18:00です。アプリは、トレイかメニューバーで起動している必要があります。
移動先は、All photosのように、メインフォルダの中のフォルダか、D:\Photos\Allのような別のフォルダにする必要があります。すでに移動先にあるファイルは整理済みとみなされるので、File Arborは、走査しているフォルダそのものにファイルをまとめることはしません。
同じ名前、取り消し、ファイルの出どころ
- 同じ名前。同名ファイルがあるときの設定が名前を変更(既定)なら、2つ目のファイルは
IMG_0001 (1).jpgとして届きます。何も上書きされません。設定が上書きだと、最初の走査のダイアログが赤字で警告し、名前を変更で走査を実行することを提案します。 - フォルダ名を残す。ルールで「ファイル名も変更する」をオンにし、テキストで編集で
<Folder>_<Name>と書きます。すると、Rome/IMG_0001.jpgはRome_IMG_0001.jpgとして届きます。ルールのプレビューには、何かが動く前に、新しい名前がそれぞれ表示されます。 - 元に戻す。実行の直後に元に戻すを押すと、すべてのファイルが戻ります。履歴には、移動ごとに出どころが載り、1つずつ元に戻せます。ごみ箱に送られたフォルダは、アプリではなく、ごみ箱から復元します。
- 山ではなく階層を残したいとき。構造を保つを選ぶと、移動先の下にサブフォルダが再現されます。
- 除外。走査から外すサブフォルダを選べます。
node_modules、.gitなどのフォルダは、すでにスキップされており、Macでは、アプリやPhotosライブラリの中には走査が入りません。
無料プランは、監視フォルダ1つ、ルール2つ、1日20ファイルまで、手動実行です。サブフォルダの走査、スケジュールモード、正規表現による一致はProの機能で、24.99ドルの買い切りです(料金を参照)。すべてのオプションは、ハンドブックのサブフォルダの項目に載っています。
平らにしたあとで日付ごとに並べ直したいときは、ファイルを年と月のフォルダに整理する方法を参照してください。
ファイルを失わずにフォルダの階層を平らにするには?
5つの習慣です。
- 先にプレビューする。PowerShellでは
-WhatIf、ターミナルでは-print、File Arborでは最初の走査の確認を使います。 - 上書きの選択肢は使わない。写真や書類では特にです。置き換えられたファイルは戻りません。
- 大切なファイルなら先にフォルダをコピーする。コマンドを使うときは必ずです。
- 前後でファイル数を確かめる。エクスプローラーとFinderは、項目の数を表示します。
- 空のフォルダを削除するのは移動のあと。数が一致してからにします。
どの方法を選ぶべきですか?
Windowsで数百ファイル。 エクスプローラーの検索。
数千ファイル、または何度も実行するコマンド。 PowerShell。先に-WhatIfを付けます。
Macで1種類のファイル。 Finderの検索で、種類を条件にします。
Macですべて、またはインデックスされていないドライブ。 ターミナル。
新しいサブフォルダが入り続けるフォルダ。 スケジュールのFile Arbor。特に、同名のファイルに番号を付けたい、フォルダ名をファイル名に残したい、空のフォルダをまとめて削除したいときに向いています。名前のパターンでファイルをフォルダに振り分けたいなら、ファイル名でファイルをフォルダに振り分ける方法を参照してください。
FAQ
Windows 11でサブフォルダのファイルをすべてメインフォルダに移動するにはどうすればよいですか
メインフォルダを開き、検索ボックスに*を入力して、種類で並べ替え、ファイルを選んでCtrl+Xで切り取り、メインフォルダに貼り付けます。数千ファイルなら、Get-ChildItemとMove-Itemを使うPowerShellの1行で同じことができます。どちらの方法でも、空になったサブフォルダは残るので、別に削除する必要があります。
Macでフォルダの階層を平らにするにはどうすればよいですか
Finderで⌘Fを押し、検索の範囲をそのフォルダにして、種類にファイルの種類を指定し、すべて選択してコピーします。移動先で⌥⌘Vを押すと、コピーではなく移動になります。ターミナルでは、メインフォルダから-mindepth 2とmv -nを使うfindを実行します。どちらの方法でも、空になったサブフォルダは残ります。
フォルダを平らにしたとき、同じ名前のファイルはどうなりますか
方法によって違います。エクスプローラーとFinderは対応を尋ね、番号を付けて両方を残せます。PowerShellとmv -nは、2つ目のファイルをサブフォルダに残します。File Arborは、IMG_0001 (1).jpgのように番号を付けて名前を変えます。写真や書類では上書きの選択肢を避けてください。置き換えられたファイルは戻りません。
サブフォルダのファイルを移動ではなくコピーして1つのフォルダに集められますか
できます。エクスプローラーでは検索結果にCtrl+CとCtrl+V、Finderでは⌥⌘Vの代わりに⌘Vを使います。PowerShellのCopy-Itemは同名のファイルを確認なしに上書きするので、先にフォルダ全体をコピーし、そのコピーを移動のコマンドで平らにしてください。元の階層には手が付きません。
そのあと空のサブフォルダを削除するにはどうすればよいですか
Windowsでは、コマンド プロンプトのrdのループか、空のディレクトリを削除するPowerShellの1行を使います。Macでは、先に.DS_Storeファイルを削除し、-type d -empty -deleteを付けてfindを実行します。File Arbor Proなら、実行のたびに空のフォルダをごみ箱(Macではゴミ箱)に移動でき、そこから元に戻せます。正確なコマンドは、空のフォルダを削除するガイドにあります。
まとめ
一度きりなら、標準の方法のどれでも数分で済みます。フォルダがすぐにいっぱいになるなら、File Arbor Proが、スケジュールでファイルをまとめて置き、重複に番号を付け、必要ならフォルダ名を残し、空のフォルダをごみ箱に移動します。File Arborをダウンロードして、まず1つのフォルダで試してみてください。無料プランは、監視フォルダ1つ、ルール2つ、1日20ファイルまで、手動実行です。サブフォルダの走査とスケジュールモードはProの機能で、24.99ドルの買い切り、アップデートは生涯無料です。詳しくは料金ページを参照してください。