Как копировать папки без содержимого
Как в Windows 10 удалить файлы, но оставить структуру папок
Создавать папки нетрудно, однако, если у вас имеется сложная структура каталогов, из которой нужно удалить все файлы, вряд ли вы захотите создавать ее заново, удалив ее перед этим вместе с файлами. Впрочем, удалить все файлы, сохранив при этом структуру директорий очень даже просто, причем сделать это можно как минимум тремя путями. Первый способ предполагает копирование имеющейся структуры с игнорированием ее содержимого.
Копирование структуры
Воспользуемся для этих целей встроенной консольной утилитой XCOPY. Предположим, что у нас есть папка Data с вложенными каталогами, в которых содержаться некие файлы, которые нужно удалить.
С помощью Total Commander
Если у вас есть файловый менеджер Total Commander, используем встроенную функцию вывода содержимого без каталогов.
В результате все содержащиеся в нём файлы, в том числе те, которые находятся во вложенных каталогах, будут выведены в панели файлового менеджера. Готово, теперь вам останется их только выделить и удалить.
Папки при этом останутся на месте.
Рекурсивным методом в PowerShell
Для этого в запущенной консоли выполняем команду:
Этой командой мы рекурсивно проходим по каталогам, получаем список файлов и удаляем их. Удалены, однако, будут только те файлы, которые имеют расширение или точку в имени.
Как правильно скопировать файлы и папки исключая некоторые из них
Топик написан в ответ на похожий.
Автор оригинального топика предлагает решить задачу в лоб — а именно, скопировать все файлы а потом удалить не нужные. Это может быть неплохим решением, если вам, конечно, не нужно скопировать всю домашнюю папку на флешку, за исключением вашей коллекции видео.
Но главная проблема этого подхода в другом — он не соответствует идеологии unix: сложные задачи решаются комбинацией простых утилит.
Под катом подробности о методах решения этого класса задач — не рассматривайте это как готовый рецепт.
0. Декомпозиция
Решение любой комплексной задачи начинается с разбора её на составные части. Итак нам нужно скопировать некоторый набор файлов предварительно его отфильтровав.
Значит — получение списка файлов, фильтрация, копирование.
1. Получение списка файлов
Обычно мы просматриваем список файлов программой ls. Её вывод выглядит примерно так:
Подходит ли там такой вывод? Нет, потому, что в нем недостаточно информации — нам нужно копировать файлы рекурсивно, значит для нас было-бы гораздо удобнее если первая в нашей цепочке программа выдала там имена файлов вместе с путями.
Следующая программа, которая приходит на ум — find
Уже лучше но в вывод попали и директории, а они нам не нужны. Попробуем так:
Вот то, что там нужно. Список файлов.
2. Фильтрация
Этот список файлов нужно отфильтровать. Перенаправим вывод нашей предыдущей комманды в программу grep.
Хорошо, но в условиях задачи стоит исключать файлы, так что немного поменеяем наш конвейер
Первые две части выполнены.
3. Копирование
Из man-страницы для команды cp мы можем узнать, что исходный файл нужно передавать программе cp в качестве аргумента, а мы пока можем только перенаправить список на стандартный ввод.
Применим утилиту xargs — она принимает стандартный ввод и вызывает указанную программу с параметрами из стандартного ввода. Итак:
Можно считать, что задача решена.
Вместо заключения
Я надеюсь что это описание поможет правильно подходить к решению как таких простых так и более комплексных задач.
Как скопировать структуру каталогов без копирования файлов?
У меня есть папка с кучей подпапок и файлов в них. Есть ли способ скопировать структуру папок и подпапок без копирование файлов, которые они содержат, с помощью cmd или powershell?
9 ответов
Если вы хотите скопировать пустые папки, а также.
команда xcopy C:\Folders D:\Folders /т /е
подробнее о команде xcopy можно найти здесь http://ss64.com/nt/xcopy.html
хотя XCOPY все еще работает, Windows Vista и более поздние версии включают ROBOCOPY, который имеет больше возможностей. Общий синтаксис копирования дерева папок (включая пустые папки) без файлов:
robocopy «A:\Source folder» «B:\Destination folder» /e /xf *
PowerShell метод, который не требует копирования каждого файла, а затем удалить их:
или более лаконично:
единственный интересный трюк здесь фильтрация на PSIsContainer свойство, которое верно для каталогов, но не для файлов.
там, вероятно, лучшее решение, но я хотел бы видеть эти:
копировать все, а затем очистить папки со сценарием.
сделать скрипт, который будет копировать все, если у него нет расширения. Если у вас нет файлов без расширения в папках, которые вы не должны, это должно работать, потому что, ну. Папки не имеют расширения. Что-то, что будет выглядеть так псевдокод:
open_directory ($path);
в то время как($файл=get_directory_content) <
если(пусто(get_file_extension (файл$))) <
copy_the_file ($file,$destination);
>
>
close_directory;
насколько я знаю, есть стороннее программное обеспечение, которое может обеспечить эту функциональность, Если вы хотите сделать с командной строкой, то команда копирования там. тип помогите скопировать в cmd, который предоставляет подробную информацию о том, как вы копируете файлы через cmd.
после копирования зайти в папку через cmd и выполнить команду
Копирование структуры папок (без файлов) из одного места в другое
Я хочу скопировать в систему linux, и наш файловый сервер установлен там CIFS.
12 ответов:
вы могли бы сделать что-то вроде:
чтобы создать список каталогов, то
для создания каталогов в месте назначения.
вот простое решение с помощью rsync:
Я не знаю, если вы ищете решение на Linux. Если да, то вы можете попробовать это:
это копирование атрибутов каталогов и файлов, но не данных файлов:
затем вы можете удалить атрибуты файлов, если они вас не интересуют:
просто замените SOURCE_DIR и DEST_DIR.
следующее решение хорошо работало для меня в различных средах:
заменить target_dir и source_dir с соответствующими значениями:
протестировано на OSX + Ubuntu.
Это решает даже проблему с пробелами:
в оригинале / источнике реж.:
затем воссоздать его во вновь созданном dir:
Если вы можете получить доступ с компьютера Windows, вы можете использовать xcopy с /T и /E, чтобы скопировать только структуру папок (/E включает пустые папки)
на самом деле может быть лучше 🙂
или из командной строки:
создайте файл типа syncDirs.php С этим содержание:
запустите его как пользователь, который имеет достаточно прав:
Как скопировать структуру папок в Windows 10
Как скопировать структуру папок в Windows 10
Когда вы копируете и вставляете папки, все файлы и подпапки копируются вместе. Все файлы остаются в своих соответствующих подпапках, как они должны. Если вам не нужно копировать файлы, а нужно просто реплицировать структуру папок без создания папок вручную, вам следует использовать Xcopy.
Xcopy — это утилита, которая по умолчанию доступна в Windows 10 так что вы можете использовать этот метод из коробки, чтобы скопировать и вставить структуру папок. Вы можете реплицировать структуру в любом месте, например, если папка находится на рабочем столе, вы можете скопировать ее и весь ее подкаталог на внешний диск или в другую папку на другом внутреннем диске.
Копировать структуру папок
Сначала переместите папку, для которой вы хотите скопировать структуру, в новую папку, в которой ничего нет еще в нем.
Откройте окно командной строки. Вам не нужны права администратора для копирования структуры папок, если только вы не планируете создавать / копировать структуру на диск C, который обычно является диском Windows.
Используйте следующую команду, чтобы скопировать структуру папок.
Синтаксис
XCOPY ‘Путь к корневой папке’ ‘Путь к папке назначения’ / T / E
Пример
XCOPY ‘C: UsersfatiwOneDriveDesktopMy Тестовая папка’ D: / T / E
Первый путь — папка, в которую я поместил папку, структуру которой я хочу скопировать. Во втором пути я хочу скопировать его в корневой каталог диска D.
/ T — это переключатель и Это то, что говорит Xcopy копировать только структуру папок, а не файлы в ней. / E указывает Xcopy также включать пустые папки. Конечно, вы можете запустить команду без ключа / E, и структура скопированных папок будет включать в себя только те папки, в которых есть файлы.
Xcopy — довольно мощный инструмент, и для него доступна документация, подробно различные переключатели, которые вы можете использовать с ним. Этот инструмент не предназначен только для копирования папок. Если у вас есть сложная команда копирования, которую вам нужно запустить, этот инструмент — первое, что вы должны проверить. Он уже присутствует в вашей системе и включен в системный путь, поэтому вы можете выполнять команды Xcopy непосредственно из любой папки.
Что делает его немного неудобным, так это то, что он является инструментом командной строки и не имеет графического интерфейса для него. Если вы новичок в использовании инструмента и все еще пытаетесь выяснить правильный синтаксис команды, запустите ее на тестовых папках и файлах, чтобы не потерять ничего важного.