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

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

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

Видео: Как да копирате файл в няколко директории с едно команда в Linux
Видео: Lowest Bidder Got The Job for a New Steam Boiler - Now They Need Help - 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

.)

Друго нещо, което трябва да обмислите, е, че ако копирате много голям файл, може да искате да добавите не-clobber (

-n

) опция към

cp

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

-n

опция и няма да копира файла до местоназначение, посочено в аргументите, в изявлението за ехо, ако файлът вече съществува в това местоназначение.

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

Препоръчано: