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

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

00_lead_image_copying_to_three_locations_with_one_command

Копирането на файл с командния ред на Linux елесно. Какво обаче, ако искате да копирате един и същ файл на няколко различни места? Това също е лесно и ще ви покажем как да направите това с една команда.

Обикновено за да копирате един файл, ще използвате cp команда, свързване към изходния файл и директорията на местоназначението:

cp ~/Documents/FileToBeCopied.txt ~/TextFiles/

За да го копирате в още две директории, много хора просто ще изпълнят командата още два пъти, с различни дестинации:

cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/

01_entering_cp_command_three_times

Въпреки това можем да свършим същата задача с една команда:

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

02_using_single_command

Обърнете внимание, че ако файлът, който се копира, съществува във всекиот посочените директории за местоназначение, файлът в това местоназначение ще бъде заменен автоматично. Няма да бъдете попитани дали искате да замените файла. (Обикновено, когато използвате cp команда за копиране на файл на едно място, можете да добавите -i опция да попитате дали искате да замените съществуващ файл. както и да е -i опцията е интерактивна опция (причинява cp команда да поиска въвеждане от потребителя) и не можете да използвате интерактивна опция с cp команда, когато го използвате заедно с xargs .)

Друго нещо, което трябва да се има предвид, е, че ако копирате много голям файл, може да искате да добавите no-clobber ( -n ) опция към cp команда в единичната команда по-горе. Тази опция автоматично предотвратява презаписване на файл в дестинация, ако той вече съществува там. Ако копирате много голям файл през мрежа, това може да е бавно и може да искате да избегнете използването на ресурсите, необходими за копиране и подмяна на файла. Следващата команда добавя -n опция и няма да копира файла до която и да е дестинация, посочена в аргументите към оператора echo, ако файлът вече съществува в това местоназначение.

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

03_single_command_with_no_clobber

Въведете man echo, man xargs или man cp в командния ред в Linux за повече информация за която и да е от тези команди.