Как скопировать файл в несколько папок сразу

понятно, что ни ни один Перетащить и отпустить не позволит вам сделать это за минуту, здесь нужен более продвинутый метод.

Для таких целей существуют специальные программы, но вы можете обойтись и без них, используя самую обычную командную строку, а точнее командный файл.

Скопируйте приведенный ниже код и вставьте его в текстовый файл.

Как скопировать файл в несколько папок сразу

В коде скрипта есть два способа C: Data а также D: Im.jpg, первый – это путь к каталогу со всеми подпапками, куда будет скопирован файл, второй – это путь к скопированному объекту, который может использоваться не только файлом, но и папкой.

Замените пути на свои и сохраните отредактированный файл с расширением или .

Как скопировать файл в несколько папок сразу

Название скрипта оставляем на ваше усмотрение.

Запустите сценарий, и файл будет скопирован в дочерние папки указанного родительского каталога до первого уровня вложенности.

Как скопировать файл в несколько папок сразу

После выполнения сценария на экране появится окно командной строки, которое немедленно закроется, как только процедура копирования будет завершена. Если вы хотите увидеть прогресс, добавьте команду паузы в конец кода командного файла, это даст вам возможность вручную закрыть консоль, нажав любую клавишу.

Источник изображения: www.white-windows.ru

Первое: скопировать папку со всеми файлами и папками “C:Data” в папку “C:papka1”

Второе: есть список файлов и папок с путями которые расположены в “C:DATA”:

Эти файлы вмесите с папками (тоисть не терять структур папок (пусть они и указаны в списке)), их нужно скопировать по пути “C:papka2”
Этот список можно использовать, как и в сам батник, или как отсылку на .txt файл.
+ В списке около 5000 строк файлов и папок и по этому, желательно получить в командной строке что например (19 из 19 строчек скопировано), если не все строчки, показать какие.

P.S. Раньше проводил копирование файлов батником который находит новые файлы не старше 24 часов, и оставлял новые файлы в папке “orig”:

Но не всегда все файлы копировались.
Сейчас же появились пути к файлам и я хочу копировать по каждому файлу, для лучшего отслеживания файлов.

Существует ли быстрый способ перенести файлы из 100 папок в одну?

Возникла необычная ситуация. Нужно, в фото архиве, объединить содержимое множества папок. При этом, сами папки имеют вложенные в них другие папки. Как в Windows перенести содержимое (файлы фотографий в частности )подобного каталога в одну большую папку, не тратя на это кучу времени?

Такой способ есть. Для этого вам понадобится total commander. Поместите все папки из которых нужно достать файлы в одну. Откройте эту папку — в ней вы должны увидеть все папки из которых вам нужно перенести файлы. Нажимаете ctrl+b и у вас все файлы будут отображены без папок и подпапок. Дальше выделяете все файлы и копируете или перемещаете в нужную папку. Есть еще один способ. Открыть место где хранятся все фотографии — нажать alt+f7, откроется поиск и в строку поиска вписать формат файла фотографий, например jpg и нажать “начать поиск”, когда поиск завершится, нажать файлы на панель, и тогда все файлы будут тоже показаны без папок в одно месте. Вы их выделяете и копируете или перемещаете. В проводнике тоже можно так сделать. Например у вас есть папка Фото и там хранятся все папки и подпапки с фотографиями. Вы открываете эту папку, пользуетесь поиском по этой папке и опять же вводите в поиск формат файлов, например jpg, когда поиск завершится, выделяете и копируете или перемещаете.

Самый надежный первый — скидываете все папки с фотками в одну — нажимаете ctrl+b, тогда все файлы просто будут отображены без папок, но для этого нужен total commander.

Как скопировать сразу все файлы из множества подпапок

Всем доброго времени суток и всяческих прочих разностей.

Небольшая заметка в блог, которая может немного упростить кому-либо жизнь в определенной ситуации, а точнее говоря спасти бесценное времени. Речь идет о ситуации, когда у Вас есть огромное количество подпапок в каждой из которых лежат файлы и все их надо скопировать в одну.

Как скопировать файл в несколько папок сразу

Как Вы понимаете, мышкой открывать каждую папку, чтобы потом тыркнуть скопировать (ну или перетащить), чтобы потом тыркнуть вставить в нужную, и так по кругу, достаточно, мягко говоря, накладно (особенно, если разных подпапок, скажем тысяча и более). А уж если в папках есть подпапки, а в них еще.. Ну Вы поняли.

Рассказываю как сделать это быстро и просто.

Чтобы Вы поняли о чем идет речь, есть вот такая вот каша из более чем тысячи папок в которых, собственно, тысячи файлов:

Как скопировать файл в несколько папок сразу

Нужно получить на выходе такую вот кашу из всех файлов, но в одной папке:

Как скопировать файл в несколько папок сразу

Можно сделать это консолью, но можно и поступить попроще. Скачиваем Total Commander , запускаем, открываем папку в которой лежат подпапки с папками, т.е верхнюю в структуре:

Как скопировать файл в несколько папок сразу

Нажимаем на клавиатуре Ctrl+B , чтобы отобразить все файлы во всех папках и подпапках, одним списком, т.е без папок, т.е содержимое:

Как скопировать файл в несколько папок сразу

Используя, скажем, мышь или клавишу F5 (копирование) или клавишу F6 (перемещение) копируем в нужную нам папку.

На сим, собственно, всё, такая вот кратенькая заметка. Авось кому-нибудь пригодится 😉

Как скопировать все файлы из разных папок в одну?

У меня Windows XP. Есть много директорий. В этих директориях много поддиректорий, где лежат файлы.

Как можно скопировать все файлы из этих директорий и поддиректорий в одну? Делать это вручную или прописывать в батнике пути к каждой директории нереально, т.к. их много и они периодически меняются.

Может есть софтина какая или через xcopy как-то можно, указав родительскую директорию скопировать все файлы (без директорий) оттуда?

При работе в терминале довольно часто приходится копировать файлы. Чаще всего для этого используется команда cp Linux. Она поставляется по умолчанию во всех дистрибутивах и умеет копировать файлы и папки, а также сохранять их атрибуты в файловых системах Linux.

В этой статье мы рассмотрим что представляет из себя эта утилита, её синтаксис, основные опции, а также несколько примеров использования.

  • Синтаксис и опции cp в Linux
  • Примеры использования cp
  • Выводы

Утилита имеет два возможных варианта синтаксиса для копирования файлов: копирование файла в другой файл с указанным именем:

$ cp опции /путь/к/файлу/источнику /путь/к/файлу/назначения

И копирование файла с сохранением его имени в указанную папку:

$ cp опции /путь/к/файлу/источнику /путь/к/директории/назначения

В первом случае, после выполнения команды файл-источник будет полностью перенесен в файл-назначения. Если же в качестве файла назначения выбрана директория, то файл или каталог будет записан в эту директорию с оригинальным именем.

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

Кроме перечисленных выше опций, существуют опции, которые объединяют в себе несколько других с определёнными значениями. Во основные из них:

  • -p – сохранять владельца, временные метки и флаги доступа при копировании, аналогично –preserve=mode,ownership,timestamps;
  • -d – копировать символические и жесткие ссылки именно как ссылки, аналогично –no-dereference –preserve=links;
  • -a – режим резервного копирования, при котором сохраняются все атрибуты, ссылки, а также выполняется резервное копирование папок, аналогично –recursive –preserve=all, –no-dereference;

Время на прочтение

В этой статье будут раскрыты некоторые неочевидные вещи связанные с использованием wildcards при копировании, неоднозначное поведение команды cp при копировании, а также способы позволяющие корректно копировать огромное количество файлов без пропусков и вылетов.

Допустим нам нужно скопировать всё из папки /source в папку /target.

Первое, что приходит на ум это:

cp /source/* /target

Сразу исправим эту команду на:

cp -a /source/* /target

Ключ -a добавит копирование всех аттрибутов, прав и добавит рекурсию. Когда не требуется точное воспроизведение прав достаточно ключа -r.

После копирования мы обнаружим, что скопировались не все файлы — были проигнорированы файлы начинающиеся с точки типа:

.profile
.local
.mc
и тому подобные.

Почему же так произошло?

Потому что wildcards обрабатывает shell (bash в типовом случае). По умолчанию bash проигнорирует все файлы начинающиеся с точек, так как трактует их как скрытые. Чтобы избежать такого поведения нам придётся изменить поведение bash с помощью команды:

shopt -s dotglob

Чтобы это изменение поведения сохранилось после перезагрузки, можно сделать файл wildcard.sh c этой командой в папке /etc/profile.d (возможно в вашем дистрибутиве иная папка).

А если в директории-источнике нет файлов, то shell не сможет ничего подставить вместо звёздочки, и также копирование завершится с ошибкой. Против подобной ситуации есть опции failglob и nullglob. Нам потребуется выставить failglob, которая не даст команде выполниться. nullglob не подойдёт, так как она строку с wildcards не нашедшими совпадения преобразует в пустую строку (нулевой длины), что для cp вызовет ошибку.

:/>  Служба, которая отвечает за активацию windows 7 и службы звука не отвечают в Windows 10

Однако, если в папке тысячи файлов и больше, то от подхода с использованием wildcards стоит отказаться вовсе. Дело в том, что bash разворачивает wildcards в очень длинную командную строку наподобие:

На длину командной строки есть ограничение, которое мы можем узнать используя команду:

Получим максимальную длину командной строки в байтах:

Получим что-то типа:

Итак, давайте будем обходиться вовсе без wildcards.

Давайте просто напишем

cp -a /source /target

И тут мы столкнёмся с неоднозначностью поведения cp. Если папки /target не существует, то мы получим то, что нам нужно.

Однако, если папка target существует, то файлы будут скопированы в папку /target/source.

Не всегда мы можем удалить заранее папку /target, так как в ней могут быть нужные нам файлы и наша цель, допустим, дополнить файлы в /target файлами из /source.

Если бы папки источника и приёмника назывались одинаково, например, мы копировали бы из /source в /home/source, то можно было бы использовать команду:

cp -a /source /home

И после копирования файлы в /home/source оказались бы дополненными файлами из /source.

Такая вот логическая задачка: мы можем дополнить файлы в директории-приёмнике, если папки называются одинаково, но если они отличаются, то папка-исходник будет помещена внутрь приёмника. Как скопировать файлы из /source в /target с помощью cp без wildcards?

Чтобы обойти это вредное ограничение мы используем неочевидное решение:

cp -a /source/. /target

Те кто хорошо знаком с DOS и Linux уже всё поняли: внутри каждой папки есть 2 невидимые папки “.” и “..”, являющиеся псевдопапками-ссылками на текущую и вышестоящие директории.

  • При копировании cp проверяет существование и пытается создать /target/.
  • Такая директория существует и это есть /target
  • Файлы из /source скопированы в /target корректно.

Итак, вешаем в жирную рамочку в своей памяти или на стене:

Поведение этой команды однозначно. Всё отработает без ошибок вне зависимости от того миллион у вас файлов или их нет вовсе.

Выводы

Если нужно скопировать все файлы из одной папки в другую, не используем wildcards, вместо них лучше использовать cp в сочетании с точкой в конце папки-источника. Это скопирует все файлы, включая скрытые и не завалится при миллионах файлов или полном отсутствии файлов.

Послесловие

vmspike предложил аналогичный по результату вариант команды:

cp -a -T /source /target

cp -aT /source /target

ВНИМАНИЕ: регистр буквы T имеет значение. Если перепутать, то получите полную белиберду: направление копирования поменяется.

P.S. Замеченные ошибки направляйте в личку. Повышаю за это карму.

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Python становится все популярнее благодаря относительной простоте изучения, универсальности и другим преимуществам. Правда, у начинающих разработчиков нередко возникают проблемы при работе с файлами и файловой системой. Просто потому, что они знают не все команды, которые нужно знать.

Эта статья предназначена как раз для начинающих разработчиков. В ней описаны 8 крайне важных команд для работы с файлами, папками и файловой системой в целом. Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).

Показать текущий каталог

Относительный путь хорош тем, что работает для всех пользователей, с любыми системами, количеством дисков и так далее.

Так вот, для того чтобы показать текущий каталог, нужна встроенная в Python OS-библиотека:

Ее легко запомнить, так что лучше выучить один раз, чем постоянно гуглить. Это здорово экономит время.

Как скопировать файл в несколько папок сразу

Имейте в виду, что я использую Google Colab, так что путь /content является абсолютным.

Проверяем, существует файл или каталог

Функция os.path.exists () принимает аргумент строкового типа, который может быть либо именем каталога, либо файлом.

В случае с Google Colab при каждом запуске создается папка sample_data. Давайте проверим, существует ли такой каталог. Для этого подойдет следующий код:

Как скопировать файл в несколько папок сразу

Эта же команда подходит и для работы с файлами:

Как скопировать файл в несколько папок сразу

Если папки или файла нет, команда возвращает false.

Как скопировать файл в несколько папок сразу

Объединение компонентов пути

Но не переживайте, Python прекрасно решает эту проблему благодаря функции os.path.join (). Давайте перепишем вариант из примера в предыдущем пункте, используя эту функцию:

Как скопировать файл в несколько папок сразу

Создание директории

Давайте посмотрим, как это работает на практике.

Как скопировать файл в несколько папок сразу

Если же мы попытаемся создать каталог, который уже существует, то получим исключение.

Как скопировать файл в несколько папок сразу

Именно поэтому рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:

if not os.path.exists(‘test_dir’):
os.mkdir(‘test_dir’)

Еще один совет по созданию каталогов. Иногда нам нужно создать подкаталоги с уровнем вложенности 2 или более. Если мы все еще используем os.mkdir (), нам нужно будет сделать это несколько раз. В этом случае мы можем использовать os.makedirs (). Эта функция создаст все промежуточные каталоги так же, как флаг mkdir -p в системе Linux:

os.makedirs(os.path.join(‘test_dir’, ‘level_1’, ‘level_2’, ‘level_3’))

Вот что получается в результате.

Как скопировать файл в несколько папок сразу

Показываем содержимое директории

Команда отличается от os.walk (), где последний рекурсивно показывает все, что находится «под» каталогом. os.listdir () намного проще в использовании, потому что просто возвращает список содержимого:

Как скопировать файл в несколько папок сразу

В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:

from glob import globlist(glob(os.path.join(‘sample_data’, ‘*.csv’)))

Как скопировать файл в несколько папок сразу

Перемещение файлов

import shutilfor file in list(glob(os.path.join(‘sample_data’, ‘*.csv’))):
shutil.move(file, ‘test_dir’)

Как скопировать файл в несколько папок сразу

Кстати, есть два способа выполнить задуманное. Например, мы можем использовать библиотеку OS, если не хочется импортировать дополнительные библиотеки. Как os.rename, так и os.replace подходят для решения задачи.

Но обе они недостаточно «умные», чтобы позволить перемесить файлы в каталог.

Как скопировать файл в несколько папок сразу

Чтобы все это работало, нужно явно указать имя файла в месте назначения. Ниже — код, который это позволяет сделать:

for file in list(glob(os.path.join(‘test_dir’, ‘*.csv’))):
os.rename(
file,
os.path.join(
‘sample_data’,
os.path.basename(file)
))

Как скопировать файл в несколько папок сразу

Здесь функция os.path.basename () предназначена для извлечения имени файла из пути с любым количеством компонентов.

Другая функция, os.replace (), делает то же самое. Но разница в том, что os.replace () не зависит от платформы, тогда как os.rename () будет работать только в системе Unix / Linux.

Еще один минус — в том, что обе функции не поддерживают перемещение файлов из разных файловых систем, в отличие от shutil.

Поэтому я рекомендую использовать shutil.move () для перемещения файлов.

Копирование файлов

Если нужно скопировать файл README.md из папки «sample_data» в папку «test_dir», поможет функция shutil.copy():

shutil.copy(
os.path.join(‘sample_data’, ‘README.md’),
os.path.join(‘test_dir’)
)

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Удаление файлов и папок

Когда нужно удалить файл, нужно воспользоваться командой os.remove():

Если требуется удалить каталог, на помощь приходит os.rmdir():

os.rmdir(os.path.join(‘test_dir’, ‘level_1’, ‘level_2’, ‘level_3’))

Как скопировать файл в несколько папок сразу

Однако он может удалить только пустой каталог. На приведенном выше скриншоте видим, что удалить можно лишь каталог level_3. Что если мы хотим рекурсивно удалить каталог level_1? В этом случае зовем на помощь shutil.

Как скопировать файл в несколько папок сразу

Функция shutil.rmtree() сделает все, что нужно:

Пользоваться ею нужно с осторожностью, поскольку она безвозвратно удаляет все содержимое каталога.

Собственно, на этом все. 8 важных операций по работе с файлами и каталогами в среде Python мы знаем. Что касается ссылки, о которой говорилось в анонсе, то вот она — это Google Colab Network с содержимым, готовым к запуску.

Как скопировать файл в несколько папок с помощью командной строки?

Я попытался скопировать файл test.txt в несколько каталогов с помощью одной команды:

Но мне это не удалось. Есть ли способ сделать это в одной команде, чтобы я мог скопировать файл или даже папку в несколько каталогов?

7 ответов

cp может копироваться из нескольких источников, но не может копировать в несколько пунктов назначения. Для получения дополнительной информации см. man cp .

Единственная команда bash, которую я знаю, которая может копировать /сохранять для нескольких адресатов, это tee .

Вы можете использовать его в своем случае следующим образом:

Обратите внимание, что tee также записывает ввод на стандартный вывод (stdout). Поэтому, если вы этого не хотите, вы можете предотвратить его путем перенаправления стандартного вывода на /dev/null следующим образом:

Другим способом достижения копии в нескольких местах является следующая команда:

Если dir1 или dir2 имеют подкаталоги, которые вы не хотите скопировать в файл, добавьте -maxdepth 0 :

Обратите внимание, что это перезапишет каждый файл в dir1 и dir2 с содержимым file.txt , в дополнение к его копированию. Чтобы скопировать file.txt , не затрагивая другие файлы в этих каталогах, скажите find , чтобы действовать только в каталогах:

пытается скопировать два файла (

/folder1 ) в пункт назначения folder2 . (И если

/folder2 существует и является каталогом, у вас будет предупреждение «omitting directory»).

Если вы хотите сделать несколько копий файла test.txt , вам нужно использовать цикл или несколько команд .

(. и будьте осторожны, если в именах файлов есть пробелы, вам нужно указать).

:/>  Компьютер или ноутбук не видит флешку (без воды, решено) 💻

Чтобы скопировать целые каталоги, вы должны использовать опцию -r :

/folder2/folder3 со всеми включенными файлами.

Это сделает каждый каталог аргументом функции cp , используя файл test в качестве параметра .

После долгого поиска эта работа также понравится Charm!

Это скопирует file.txt в каждый каталог вашего текущего местоположения в терминале.

Это скопирует папку в каждый подкаталог в вашем текущем местоположении в терминале.

Я разделяю это, надеюсь, что это тоже помогает другим.

Если вы хотите скопировать файл test.txt в каждый каталог в /tmp /target /.

создать тестовую среду:

Просто подумал дать вариант ответа Sylvain Pineau

где dir1 и dir2 не в вашем текущем каталоге.

find ./ -maxdepth 2 -type d -name dir1 -exec cp file.txt ;

здесь find будет искать dir1 два уровня в глубину или вы можете оставить вне -maxdepth , чтобы найти dir1 во всех папках в текущем каталоге и под ним.

Копирование файлов и папок

Есть несколько способов перемещения файлов и папок в компьютере. Но мы рассмотрим универсальный — тот, которым можно перенести информацию с CD или DVD диска, записать данные на флешку и с флешки. Также при помощи него можно переписать фото или видео с фотоаппарата (видеокамеры), с мобильного телефона и с других подключаемых к компьютеру устройств.

Перемещение объектов из одного компьютерного места в другое называется копирование . Это такой процесс, при котором мы создаем точную копию данных и отправляем ее в другое место.

Пошаговая инструкция

  • Щелкните правой кнопкой мышки по объекту, который хотите перенести. В открывшемся списке нажмите на пункт «Копировать».
  • Затем щелкните правой кнопкой мышки по пустой части (не по какому-то значку, а рядом) и из списка выберите пункт «Вставить».

Вот и всё! Теперь этот объект есть в двух местах: и в том , откуда мы его взяли, и в новом (там, куда перенесли).

  • Вы открыли место, из которого хотите взять файл (например, флешку).
  • Кликнули по нему ПКМ (правой кнопкой мышки), выбрали из списка «Копировать».
  • Затем перешли в раздел, куда хотите перенести этот объект (например, Документы).
  • Нажали по пустой области ПКМ и выбрали «Вставить»

Копирование нескольких файлов/папок

Для того чтобы сделать копию нескольких файлов (папок), нужно сначала их выделить. Для этого поместите стрелку (курсор) на пустое поле рядом с данными, которые хотите скопировать.

Нажмите левую кнопку мыши и, не отпуская ее, обведите прямоугольником необходимые объекты. Когда они закрасятся цветом, это будет означать, что все они выделены. Отпустите мышку.

А теперь скопируем их. Щелкните ПКМ по любому выделенному значку. Откроется список, из которого нужно выбрать пункт «Копировать».

Затем откройте на компьютере то место, в которое хотите поместить эти данные. Это может быть Локальный диск D, Документы, флешка или какая-то папка.

И, наконец, нажмите ПКМ по пустому полю, и из появившегося списка выберите пункт «Вставить».

Всё! Файлы и папки перенеслись в новое место. То есть они теперь в двух местах: и там, где были изначально, и в новом – там, куда Вы их скопировали.

Не пугайтесь, все не так сложно, как кажется на первый взгляд. Нужно только чуть-чуть потренироваться. Удачи!

Скопировать файл в несколько папок с помощью пакетного скрипта

Я хочу скопировать файл (file.txt) во все папки данного места назначения. Я хочу создать пакетный файл, который выполняет эту работу, но я не очень разбираюсь в пакетном синтаксисе Windows.

2 ответа 2

Вы можете использовать расширенную версию команды for доступную в Windows NT 4 и более поздних версиях:

Вам нужно что-то вроде этого в командном файле:

Пакетный файл работает следующим образом:

  • Первый аргумент — это каталог назначения
  • Второй аргумент — это файл, который нужно скопировать

Команда for с параметром /D выполняет итерацию по всем каталогам по заданному пути (здесь: %1 ) и вызывает команду на каждой итерации. Указанная команда является операцией копирования, которая копирует файл в каждый каталог.

Конечно, поскольку пакетный файл представляет собой только одну строку, вы также можете выполнить его непосредственно в командной строке. Сразу отметим , что переменная for имеет только % то.

Как быстро скопировать имя файла в Windows

Хотите быстро скопировать имя файла в Windows. Я всегда использую переименование, копирование, но чувствую, что это довольно медленно. Есть ли лучший способ?

Нажмите, F2 чтобы переименовать, Ctrl +, C чтобы скопировать. Два нажатия клавиш без каких-либо дополнительных утилит.

Вы можете получить бесплатную утилиту контекстного меню , по праву называемую «Утилита копирования имени файла», которая добавит эту опцию в файлы:

Как скопировать файл в несколько папок сразу

Совместим с XP, Vista, 7 (32- и 64-разрядные версии). Всего 11кб.

Если вы просто пытаетесь скопировать имена файлов в буфер обмена, попробуйте следующее:

  • Нажмите кнопку Пуск, выберите пункт Выполнить, введите cmd и нажмите кнопку ОК.
  • перейдите в соответствующий каталог с помощью cd команды.
  • тип dir
  • С помощью мыши выделите имена файлов, которые вы хотите скопировать.
  • Нажмите правую кнопку мыши — это скопирует выделенный текст в буфер обмена.

Возможно, вам придется включить режим быстрого редактирования, следуйте инструкциям здесь .

Можно ли скопировать название папок всех разом?

Простой способ через TotalCommander далее ТС. Открываешь прогу ТС Выделяешь что нужно скопировать (имена) далее в TC жмем Инструменты/ Копировать имена в буфер или другую команду, которая по душе )))

Как скопировать файл в несколько папок сразу

Первые два ответа недостаточно развернуты, упущен важный нюанс, — сначала нужно вбить букву диска и двоеточие — например D: затем нажать enter и проделывать операции выше, а именно

Идешь в Проводник. Заходишь в нужную папку. Щелкаешь по адресной строке и копируешь адрес папки. Теперь запускаешь командную строку (пуск-cmd). Там вбиваешь «cd адрес_папки» (без ковычек)Затем когда будет выбрана нужная тебе папка вбиваешь «dir» Тебе выкинет название всех файлов и папок. Теперь щелкаешь правой кнопкой по окну ком строки и выбираешь из меню «отметить» или «пометить» (mark) и выбираешь нужные папки затем копировать и вставить в нужное приложение.Вроде муторно, но на самом деле все очень быстро получается при этом не используя «левые» приложения.

Получение списка файлов из папки в текстовом виде

Для определённых целей может потребоваться составить список файлов, содержащихся в папке. Если таковых немного, то задачу можно выполнить вручную без особых затруднений, но если в папке десятки, сотни или даже тысячи файлов, то пытаться составить их список вручную это бесполезная трата времени. Можно ли этот процесс как-то автоматизировать?

Как скопировать файл в несколько папок сразу

Автоматическое создание списка файлов

К счастью, функционал Windows и других программных решений, позволяет создавать списки файлов в папках в автоматическом порядке. Данные списки можно потом будет без проблем скопировать в текстовый файл и редактировать по мере необходимости.

Рассмотрим все имеющиеся способы создания такого списка.

«Командная строка»

Этот способ является стандартным и не требует от пользователя каких-либо особых умений, за исключением базового владения «Командной строкой». Итак, инструкция к данному варианту выглядит следующим образом:

  • Перейдите в ту папку, список файлов из которой вы хотели бы получить.
  • Теперь зажмите Shift на клавиатуре и нажмите правой кнопкой мыши по пустому месту в окне «Проводника».
  • Должно появится контекстное меню, где требуется выбрать вариант «Запуск командной строки» или «Открыть окно команд здесь». В случае с последними версиями Windows 10 такого пункта может не быть. Вместо этого нужно нажать на «Запустить окно PowerShell здесь». PowerShell – это новый аналог «Командной строки», который Майкрософт активно внедряет в последние версии Windows 10. По сути отличий в функционале нет никаких.

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Всю информацию из него можно скопировать в документ Word, так как последний удобнее редактировать. К тому же, если в папке содержались файлы или другие папки в названии которых присутствовали кириллические символы, то в «Блокноте» таковые могут отображаться некорректно, так как нужные кодировки не поддерживаются.

Использование BAT-файла

Данный способ тоже не отличается какой-либо сложностью, плюс даёт почувствовать себя немного программистом. Суть заключается в создании специального файла с алгоритмом, который выведет список всех элементов в папке в отдельный текстовый файл. Итак, рассмотрим инструкцию к этому варианту более подробно:

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Как скопировать файл в несколько папок сразу

Содержимое данного файла также можно перенести в текстовый документ MS Word. Однако в этом случае проблем с кодировкой и неверным отображением кириллических символов не наблюдается.

DirLister

Данное бесплатное ПО не требуется установки на компьютер и с его помощью вы можете создать список всех элементов в той или иной папке. Инструкция по её использованию выглядит следующим образом:

  • Распакуйте архив, вытащив от туда исполняемый EXE-файл.
  • Запустите его.

Как скопировать файл в несколько папок сразу

Total Commander

Total Commander – это популярный файловый менеджер, где пользователь может быстро получить и скопировать всю основную информацию о файлах, а также о содержимом папок. В данном случае получить список файлов, находящихся в папке, можно следующим образом:

  • В окне Total Commander откройте нужную папку.
  • В верхнем меню нажмите на пункт «Выделение». Появится контекстное меню, где нужно нажать на вариант «Выделить всё».
  • Затем в этом же меню выберите пункт «Копировать имена файлов в буфер обмена».
:/>  Какие комбинации клавиш применяются для поиска объектов или текста

Вариант 5

Во всех современных браузерах, будь то Opera, Google Chrome, Yandex и т.д., есть функция просмотра содержимого папок и некоторых файлов, расположенных на компьютере.

Инструкция к этому варианту выглядит следующим образом:

  • Откройте «Проводник». Выберите при помощи щелчка левой кнопкой мыши ту папку, которую хотите просмотреть в браузере.
  • Перетащите эту папку в любой удобный для вас браузер. В данном случае рассматривается вариант с Opera.

Как скопировать файл в несколько папок сразу

Это были все способы, позволяющие вывести список содержимых в папке файлов в отдельный текстовый документ.

Примеры использования cp

Для примеров из этой статьи я создам несколько файлов file1, file2, file3, одну символическую ссылку link1 на файл file1 и жесткую ссылку на файл file3. Затем папку source и в ней file4, file5, file6 и папку destination. Вот так можно создать ссылки:

ln -s $(realpath file1) link1

ln file3 hlink1

В результате получится такая структура:

Как скопировать файл в несколько папок сразу

Копирование файла в файл

Самый простой пример копирования файлов когда один файл копируется в другое место с заданным именем. Для этого надо указать имя файла в папке назначения. Например, для того чтобы скопировать файл file1 в папку destination с именем file10 нужно выполнить такую команду:

cp file1 destination/file10

Как скопировать файл в несколько папок сразу

Таким же способом можно создать копию файла в той же папке.

Копирования файла в папку

Если вам не нужно менять имя файла или надо скопировать несколько файлов, то можно просто указать папку, куда их копировать не указывая имя файла. Например, для того чтобы скопировать файл file1 в папку destination с тем же именем выполните:

Как скопировать файл в несколько папок сразу

Причём в конце команды слеш ставить не обязательно. Утилита и так поймет что это папка.

Копирование папки в папку

Для копирования папок нужно использовать опцию -r (–recursive). Скопировать одну папку в другую довольно просто, если папка назначения существует. Для того чтобы скопировать папку source в папку destination выполните команду:

cp -r source destination

Как скопировать файл в несколько папок сразу

Или можно явно указать, что нужно именно скопировать source в destination с помощью опции -t:

cp -t file1 destination

Тогда, если папка destination не существует вы получите ошибку, вместо не очевидного поведения.

Копирование содержимого папки в папку

Для копирования содержимого одной директории в другую можно воспользоваться первым вариантом синтаксиса. Команда выглядит аналогичной предыдущему примеру, но она будет работать только если папки назначения не существует. Например, для того чтобы скопировать содержимое папки source в папку destination1 нужно использовать такую команду:

cp -r source destination1/

Как скопировать файл в несколько папок сразу

Если папка назначения существует, то в ней будет создана папка source. Для того чтобы избежать такого поведения можно использовать опцию -T:

cp -rT source destination/

Как скопировать файл в несколько папок сразу

Или же можно явно указать, что вас интересует именно копирование содержимого папки с помощью символа *. Например:

cp source/* destination

Однако в этом случае скрытые файлы, которые находятся в этой папке скопированы не будут. Копирование вложенных файлов и папок работает аналогичным образом.

Обработка существующих файлов

По умолчанию, если файл в папке назначения уже существует то он будет перезаписан. Если вы хотите чтобы утилита спросила вас стоит ли перезаписывать каждый существующий файл используйте опцию -i. Например:

cp -i file1 destination

Как скопировать файл в несколько папок сразу

С помощью опции -n можно никогда не перезаписывать существующие файлы:

cp -n file1 destination

Кроме того, для существующих файлов можно делать резервную копию с помощью опции -b или –backup. Например, если использовать опцию -b, то в конце названия файла резервной копии будет добавлен символ тильды ~:

cp -b file1 destination

Как скопировать файл в несколько папок сразу

При использовании опции –backup можно настроить имя резервной копии, Вот доступные варианты:

  • none – резервная копия не делается;
  • numbered – к имени файла будет добавляться номер;
  • simple – в конец файла будет добавлен знак ~;
  • existing – если в директории назначения уже есть резервные копии, то будет использоваться такой же тип именования как и у них.

Например, для того чтобы использовать номер в имени резервной копии используйте такую команду:

cp –backup=numbered file1 destination

Как скопировать файл в несколько папок сразу

Ещё один вариант обработки существующих файлов, который может быть полезен для больших файлов – заменять только если файл источник новее или файл в папке назначения не существует. Для этого нужно использовать опцию -u или –upgrade:

cp -u source/* destination

Копирование ссылок

В файловых системах Linux существует такое понятие как символические и жесткие ссылки. Команда cp может копировать их по разному. По умолчанию, как для жестких так и для символических ссылок создается копия файла, уже не связанная с оригиналом. Если вы хотите чтобы символические ссылки копировались именно как ссылки, то нужно использовать опцию -P:

cp -P link1 destination

Как скопировать файл в несколько папок сразу

Для жестких ссылок существует другой подход. Если вы хотите чтобы жесткая ссылка осталась ссылкой после копирования, нужно использовать опцию –preserve со значением links:

cp –preserve=links hlink1 destination

Как скопировать файл в несколько папок сразу

Сохранение атрибутов при копировании

По умолчанию cp обновляет временные метки и атрибуты прав доступа файлов при копировании. Но иногда может возникнуть необходимость сохранить оригинальные значения атрибутов. Для этого можно использовать опцию –preserve. Вот её возможные параметры:

  • mode – права доступа, сюда входит чтение, запись, выполнение и дополнительные флаги;
  • ownership – владелец и группа;
  • time‐stamps – временные метки, такие как дата обновления, дата создания и дата последнего доcтупа;
  • context – контекст SELinux;
  • links – сохранение жестких ссылок;
  • xattr – дополнительные атрибуты, которые настраиваются с помощью команды chattr;
  • all – всё выше перечисленное.

Если вы хотите оставить оригинального владельца и права доступа используйте опцию –preserve со значением mode,ownership или же опцию -p:

cp -p source/* destination

Как скопировать файл в несколько папок сразу

Если надо сохранить всю структуру файловой системы, в том числе символические и жесткие ссылки и временные метки, то можно использовать опцию -a:

cp -a source/* destination

Копирование и Copy-on-Write

Некоторые новые файловые системы, такие как Btrfs и ZFS поддерживают технологию Copy-on-Write. При её использовании, фактическое копирование данных из файла будет происходить только при его изменении. Эта функция работает в рамках одной файловой системы и сильно ускоряет копирование файлов. Но зато, их изменение может быть немного замедлено. По умолчанию cp использует Copy-on-Write только начиная с версии CoreUtils 9.0. но вы можете включить или отключить её вручную с помощью опции –reflink. Вот доступные значения:

  • always – всегда использовать, если не поддерживается будет выведена ошибка;
  • auto – использовать только если поддерживается;
  • never – никогда не использовать.

Например, для того чтобы включить обязательное использование CoW добавьте –reflink=always в команду копирования:

cp -reflink=always file3 destination

Обработка разреженных файлов

Разреженные файлы, это файлы которые содержат последовательности нулевых байт и в них эти последовательности заменены на их описание. Это актуально для образов дисков Qemu или VirtualBox, которые могут содержать много пустого места, которое не обязательно записывать на диск. По умолчанию, cp создает разреженные файлы только если файл источник разрежен. Однако можно настроить его таким образом, чтобы все файлы содержащие последовательности нулей делались разреженными. Настроить это поведение можно с помощью опции –sparse. Вот возможные значения:

  • auto – используется по умолчанию;
  • never – делать разреженные файлы не разрежеными;
  • always – делать файлы разреженными если они содержат достаточное количество нулевых байт.

В качестве примера можно создать образ на основе /dev/zero размером 20 мегабайт:

dd if=/dev/zero of=image1 count=20 bs=1M

Если скопировать этот файл с опцией –sparse=always, то он станет разреженным и будет занимать значительно меньше места на диске:

cp –sparse=always ./image1 /destination

Как скопировать файл в несколько папок сразу

В этой статье была рассмотрена команда cp Linux. Эта команда существует довольно давно и не очень удобна для копирования больших файлов, поскольку тут нет вывода прогресса копирования. Но зато она поддерживает много других полезных функций. Практически все задачи, по копированию файлов в Linux могут быть выполнены с помощью этой утилиты.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Оставьте комментарий