Одновременное копирование одного файла в несколько мест через командную строку Ubuntu

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

Иногда нам требуется скопировать один файл в несколько мест в нашей системе. Значит ли это, что нам нужно использовать команду cp несколько раз? Ответ - нет! Давайте читать дальше, чтобы найти решение.

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

Все мы знаем, как команда cp позволяет нам скопировать файл в новое место, используя следующий синтаксис:

Здесь я копирую файл из папки Documents в папку Downloads:

Копирование файла в одно место

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

Здесь я использую команду cp дважды, чтобы скопировать образец текстового файла из папки Downloads в папки Public и Desktop:

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

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

Синтаксис:

В следующем примере я использую эту команду для одновременного копирования текстового файла из папки Downloads в три разные папки:

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

Мы использовали команду echo и команду xargs в одной строке для достижения нашей цели.

Как работает эта команда?

Команда echo печатает вывод на экран, но в нашем примере мы используем ее для передачи вывода команде xargs через символ |. Команда xargs трижды примет входные данные от команды echo и трижды выполнит операцию cp, копируя текст образца в три разных места. Счетчик n указывает команде cp принимать по одному аргументу за раз.

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

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

Синтаксис:

Пример:

использование команды xargs

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

Теперь вам не нужно писать несколько команд для выполнения простой задачи - копирования одного файла в разные места. Вы можете объединить команды echo и xargs, как мы описали, чтобы получить однокомандное решение вашей проблемы.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий