Как переместить файлы из подпапок в одну папку
Как переместить файлы из подпапок в одну папку в Windows и на Mac: Проводник, PowerShell, Finder, Терминал. Что делать с одинаковыми именами и пустыми папками.
Чтобы переместить файлы из подпапок в одну папку, найдите поиском все файлы в основной папке, выделите результаты и переместите их разом. Это умеют и Проводник, и Finder, а одна строка PowerShell или Терминала делает то же. Сложности возникают с файлами, у которых одинаковые имена, и с пустыми папками, которые остаются после переноса. Руководство охватывает и то, и другое.
Последний способ — для папок, которые заполняются снова и снова, например для импорта с телефона, где каждый день создаётся новая папка.
Прежде чем свести папку в одну: три решения
Одинаковые имена. Допустим, в D:\Photos\Export лежат 140 вложенных папок по датам, снятых двумя камерами. Обе камеры нумеруют снимки с IMG_0001.jpg, поэтому в папке назначения два файла захотят одно имя. Решите, оставлять ли оба, добавляя номер, или пропускать второй. Каждый способ ниже ведёт себя здесь по-своему.
Имена папок несут информацию. Альбом, клиент, поездка, дата: когда файлы собраны в одну кучу, всего этого уже нет. Добавьте имя папки в имя файла (File Arbor это умеет, см. способ 5) или сохраните структуру.
Куда пойдут файлы. В саму основную папку или в новую. Перемещение внутри одного диска мгновенно. Между дисками файлы копируются, а потом удаляются из источника, и это дольше. Если файлы важны и вы собираетесь использовать команду, сначала скопируйте всю папку и сводите в одну её копию.
5 способов переместить файлы из подпапок: сравнение
| Способ | Где работает | Файлы с одинаковым именем | Пустые подпапки после | Отмена | Повторяется сам |
|---|---|---|---|---|---|
| Поиск в Проводнике | Windows 10 и 11 | Проводник спрашивает: заменить, пропустить или сравнить и оставить оба | Остаются | Ctrl+Z сразу после | Нет |
| PowerShell | Windows 10 и 11 | Второй файл остаётся в своей подпапке, с ошибкой | Остаются | Нет | Нет |
| Поиск в Finder | macOS | Finder спрашивает: оставить оба, остановиться или заменить | Остаются | Команда отмены в меню правки сразу после | Нет |
| Терминал | macOS | Второй файл остаётся в своей подпапке (mv -n) | Остаются | Нет | Нет |
| File Arbor (Pro) | Windows и Mac | Переименовывается с номером: IMG_0001 (1).jpg | По желанию: в Корзину | Отменить после запуска или по одному файлу в «Истории» | Да, по расписанию |
Ни один встроенный способ не удаляет опустевшие подпапки. О том, как убрать эти остатки, читайте в руководстве как удалить пустые папки.
Способ 1: как извлечь все файлы из подпапок через Проводник (Windows 11 и 10)
- Откройте основную папку, например
D:\Photos\Export. - Щёлкните строку поиска вверху справа, введите
*и нажмите Enter. Проводник ищет в этой папке и во всех вложенных. - Переключитесь на вид «Таблица» и щёлкните столбец Тип, чтобы подпапки («Папка с файлами») отсортировались вместе, отдельно от файлов.
- Щёлкните первый файл, затем последний, удерживая Shift, и нажмите Ctrl+X.
- Перейдите в папку назначения, в саму основную папку или в новую, и нажмите Ctrl+V.
Если файл с таким именем там уже есть, Проводник спрашивает, заменить его, пропустить или сравнить два файла. В окне сравнения отметьте обе версии, чтобы оставить оба, и перемещённый файл получит номер. 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 не сдвинулся.
Одно предупреждение. Если нужно копировать, а не перемещать, не заменяйте Move-Item на Copy-Item. Copy-Item перезаписывает файлы с одинаковыми именами без вопросов. Чтобы сохранить оригиналы, сначала скопируйте всю папку и сводите в одну её копию.
Способ 3: как свести папки в одну на Mac через поиск Finder
- Откройте основную папку в 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никогда не перезаписывает, поэтому файл, чьё имя уже занято, остаётся в своей подпапке.
Чтобы посмотреть результат, выполните ту же строку с -print вместо -exec mv -n {} . \;:
find . -mindepth 2 -type f ! -name .DS_Store -print
Когда список вас устроит, выполните настоящую команду, а затем удалите пустые подпапки командой Терминала из руководства о пустых папках.
Способ 5: как автоматически собирать файлы из подпапок в одну папку с File Arbor
Способы 1–4 рассчитаны на разовое действие. Когда папка снова и снова заполняется новыми подпапками (импорт с камеры, где на каждый день своя папка, загрузки курсов, распакованные архивы, сканер, который раскладывает по датам), вам пришлось бы повторять эту процедуру каждую неделю.
File Arbor делает это при каждом запуске, разбирается с одинаковыми именами и умеет отправлять опустевшие папки в Корзину (новое в 1.3.3). Он работает по правилам, без ИИ, и всё выполняется локально. Сканирование вложенных папок и режим «По расписанию» входят в Pro.
- Нажмите Добавить папку и выберите основную папку, например
D:\Photos\Exportили~/Pictures/Export. - Отметьте Сканировать вложенные папки на карточке папки. Это работает в режимах Ручной и По расписанию.
- Выберите Собрать вместе и отметьте Перемещать пустые папки в корзину.
- Нажмите Добавить правило. Выберите Файлы с расширением и добавьте
.jpg,.jpeg,.heicи.png, выберите Переместить в папку и введитеAll photosв поле Перемещает в. Для всех файлов независимо от типа возьмите вместо этого Файлы, соответствующие regex с шаблоном.. - Нажмите Запустить. Диалог Подтвердить первое сканирование до любого перемещения показывает, сколько файлов будет перемещено, сколько папок и как глубоко дошло сканирование, а также Примеры перемещений.
- Чтобы повторять это, переключите папку в режим По расписанию, например каждый день в 18:00. Приложение должно быть запущено, в трее или в строке меню.
Назначением должна быть папка внутри основной, вроде All photos, или другая папка, например D:\Photos\All. Файл, уже лежащий в папке назначения, считается упорядоченным, поэтому File Arbor не станет собирать файлы в ту самую папку, которую сканирует.
Одинаковые имена, отмена и откуда пришёл файл
- Одинаковое имя. Если Поведение при конфликте файлов стоит на Переименовать (по умолчанию), второй файл приходит как
IMG_0001 (1).jpg. Ничего не перезаписывается. Если выбрано Перезаписать, диалог первого сканирования предупреждает об этом красным и предлагает выполнить сканирование с Переименовать. - Сохранить имя папки. Включите Также изменить имя файла в правиле и в Редактировать как текст впишите
<Folder>_<Name>. ТогдаRome/IMG_0001.jpgпридёт какRome_IMG_0001.jpg. Предпросмотр правила показывает каждое новое имя до любого перемещения. - Отмена. Отменить сразу после запуска возвращает каждый файл на место. В Истории каждое перемещение записано с указанием, откуда оно пришло, и каждое можно отменить отдельно. Папки, отправленные в Корзину, возвращаются оттуда, а не через приложение.
- Нужно дерево, а не куча? Сохранить структуру воссоздаёт подпапки внутри папки назначения.
- Исключения. Выберите подпапки, которые нужно держать вне сканирования.
node_modules,.gitи подобные папки уже пропускаются, а на Mac сканирование никогда не заходит внутрь приложений и медиатек «Фото».
Бесплатный план — одна отслеживаемая папка, два правила, до 20 файлов в день, ручной запуск. Сканирование вложенных папок, режим «По расписанию» и сопоставление по regex входят в Pro: $24.99 разово (см. цены). Все параметры перечислены в разделе о вложенных папках в справочнике.
Если после сведения в одну папку вы захотите заново разложить файлы по датам, прочитайте, как разложить файлы по папкам года и месяца.
Как свести структуру папок в одну и ничего не потерять?
Пять привычек:
- Сначала предпросмотр.
-WhatIfв PowerShell,-printв Терминале или Подтвердить первое сканирование в File Arbor. - Никогда не выбирайте перезапись для фотографий и документов. Заменённый файл не вернуть.
- Сначала скопируйте папку, если файлы важны и вы используете команду.
- Сверьте число файлов до и после. Проводник и Finder показывают число объектов.
- Удаляйте пустые папки только после перемещения, когда числа сошлись.
Какой способ выбрать?
Несколько сотен файлов в Windows. Поиск в Проводнике.
Тысячи файлов или команда, которую вы будете повторять. PowerShell, сначала с -WhatIf.
На Mac, файлы одного вида. Поиск Finder с критерием по виду файла.
Всё подряд на Mac или неиндексируемый диск. Терминал.
Папка, которая постоянно заполняется новыми подпапками. File Arbor в режиме «По расписанию», особенно если нужно нумеровать файлы с одинаковыми именами, сохранять имена папок в именах файлов и разом убирать пустые папки. Чтобы вместо этого раскладывать файлы по папкам по шаблону имени, прочитайте о том, как раскладывать файлы по папкам по имени файла.
FAQ
Как переместить все файлы из подпапок в основную папку в Windows 11?
Откройте основную папку, введите * в строку поиска, отсортируйте результаты по типу, выделите файлы, вырежьте их через Ctrl+X и вставьте в основную папку. Для тысяч файлов то же делает одна строка PowerShell с Get-ChildItem и Move-Item. В обоих случаях опустевшие подпапки остаются на месте, и их нужно удалять отдельно.
Как свести структуру папок в одну на Mac?
В Finder нажмите ⌘F, ограничьте поиск нужной папкой, задайте вид файлов, выделите всё, скопируйте и вставьте в папку назначения через ⌥⌘V, чтобы файлы переместились, а не скопировались. В Терминале выполните из основной папки find с -mindepth 2 и mv -n. Опустевшие подпапки остаются в обоих случаях.
Что происходит с файлами с одинаковыми именами, если свести папки в одну?
Это зависит от способа. Проводник и Finder спрашивают, что делать, и могут оставить оба файла, добавив номер. PowerShell и mv -n оставляют второй файл в его подпапке. File Arbor переименовывает его с номером, например IMG_0001 (1).jpg. Не выбирайте перезапись для фотографий и документов: заменённый файл пропадает.
Можно ли скопировать файлы из подпапок в одну папку вместо перемещения?
Да. В Проводнике используйте Ctrl+C и Ctrl+V на результатах поиска, в Finder — ⌘V вместо ⌥⌘V. В PowerShell Copy-Item перезаписывает файлы с одинаковыми именами без вопросов, поэтому сначала скопируйте всю папку и сводите в одну её копию командами перемещения. Так исходное дерево останется нетронутым.
Как потом удалить пустые подпапки?
В Windows используйте цикл с rd в командной строке или строку PowerShell, которая удаляет пустые каталоги. На Mac сначала удалите файлы .DS_Store, затем выполните find с -type d -empty -delete. File Arbor Pro умеет и сам перемещать пустые папки в Корзину после каждого запуска, откуда их можно вернуть. Точные команды есть в руководстве по удалению пустых папок.
Итог
Разово справится любой встроенный способ, это вопрос минут. Когда папка снова и снова заполняется, File Arbor Pro по расписанию собирает файлы в одну папку, нумерует дубликаты, при желании сохраняет имена папок и перемещает пустые папки в Корзину. Скачайте File Arbor и попробуйте на одной папке. Бесплатный план — одна отслеживаемая папка, два правила, до 20 файлов в день, ручной запуск. Сканирование вложенных папок и режим «По расписанию» входят в Pro: $24.99 разово, бесплатные обновления навсегда; см. страницу цен.