Как скопировать файл в несколько каталогов с помощью одной команды в Linux
Копировать файл с помощью командной строки Linux легко. Однако что делать, если вы хотите скопировать один и тот же файл в несколько разных мест? Это тоже легко, и мы покажем вам, как это сделать с помощью одной команды.
Обычно, чтобы скопировать один файл, вы должны использовать ср
Команда, ссылающаяся на исходный файл и каталог назначения:
cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles /
Чтобы скопировать его в еще два каталога, многие просто запустят команду еще два раза с разными адресами:
cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Тем не менее, мы можем выполнить ту же задачу с помощью одной команды:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Вот как эта команда работает. эхо
Команда обычно пишет на экран. Однако в этом случае мы хотим скормить вывод эхо
Команда в качестве входа в xargs
команда. Для этого мы используем символ трубы ( |
) который передает выходные данные одной команды в качестве входных данных для другой. xargs
команда запустит ср
три раза, каждый раз добавляя следующий путь к каталогу из эхо
Команда до конца ср
команда. Есть три аргумента, передаваемых xargs
, но -№ 1
вариант на xargs
Команда говорит ему, чтобы добавить только один из этих аргументов одновременно ср
Команда каждый раз, когда он запускается.
Итак, чтобы придерживаться нашего примера из предыдущих, три отдельных ср
Команды выше могут быть объединены в одну команду следующим образом:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Обратите внимание, что если копируемый файл существует в любом из указанных каталогов назначения, файл в этом месте назначения будет заменен автоматически. Вас не спросят, хотите ли вы заменить файл. (Обычно, когда вы используете ср
Команда для копирования файла в одном месте, вы можете добавить -я
возможность спросить, хотите ли вы заменить существующий файл. Тем не менее -я
опция является интерактивной опцией (она вызывает ср
команда для запроса ввода от пользователя), и вы не можете использовать интерактивную опцию с ср
команда при использовании его в сочетании с xargs
.)
Еще одна вещь, которую следует учитывать, это то, что если вы копируете очень большой файл, вы можете добавить no-clobber ( -N
) вариант к ср
команда в единственной команде выше. Эта опция автоматически предотвращает перезапись файла в месте назначения, если он там уже существует. Если вы копируете очень большой файл по сети, он может быть медленным, и вы можете не использовать ресурсы, необходимые для копирования и замены файла. Следующая команда добавляет -N
и не будет копировать файл в любое место назначения, указанное в аргументах оператора echo, если файл уже существует в этом месте назначения.
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Введите man echo, man xargs или man cp в командной строке в Linux для получения дополнительной информации о любой из этих команд.