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

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

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

Видео: Как скопировать файл в несколько каталогов с помощью одной команды в Linux
Видео: Очистка диска C. Полный пошаговый гайд - YouTube 2024, Апрель
Anonim
Копирование файла с помощью командной строки Linux очень просто. Однако, если вы хотите скопировать один и тот же файл в несколько разных мест? Это тоже легко, и мы покажем вам, как это сделать с помощью одной команды.
Копирование файла с помощью командной строки Linux очень просто. Однако, если вы хотите скопировать один и тот же файл в несколько разных мест? Это тоже легко, и мы покажем вам, как это сделать с помощью одной команды.

Обычно, чтобы скопировать один файл, вы должны использовать

cp

команда, связанная с исходным файлом и целевым каталогом:

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

Вот как эта команда работает.

echo

команда обычно записывает на экран. Однако в этом случае мы хотим

echo

команды в качестве входного

xargs

команда. Для этого мы используем символ трубы (

|

), который передает выходные данные из одной команды в качестве входных данных в другую.

xargs

команда запустит

cp

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

echo

команды до конца

cp

команда. Есть три аргумента, которые передаются

xargs

но

-n 1

вариант на

xargs

команда сообщает ему только добавить один из этих аргументов за раз к

cp

команду каждый раз, когда она запускается.

Итак, чтобы придерживаться нашего примера из предыдущего, три отдельных

cp

команды выше могут быть объединены в одну команду следующим образом:

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt

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

cp

чтобы скопировать файл в одно место, вы можете добавить

-i

чтобы спросить, хотите ли вы заменить существующий файл. Тем не менее

-i

вариант является интерактивным вариантом (он вызывает

cp

команда запросить ввод от пользователя), и вы не можете использовать интерактивный вариант с

cp

при использовании в сочетании с

xargs

.)

Еще одна вещь, которую следует учитывать, заключается в том, что если вы копируете очень большой файл, вы можете добавить no-clobber (

-n

) для

cp

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

-n

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

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt

Рекомендуемые: