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

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

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

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

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

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

    cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
    cp ~ / Documents / FileToBeCopied.txt / медия / lori / MYUSBDRIVE /

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

    ехо dir1 dir2 dir3 | xargs -n 1 cp файл1

    Ето как работи тази команда. Най- ехо Командата обикновено пише на екрана. В този случай обаче искаме да захранваме изхода на ехо команда като вход към xargs команда. За да направите това, използваме символа на тръбата ( | ), която подава изход от една команда като вход към друг. Най- xargs ще изпълни командата кп командата три пъти, всеки път прикачайки следващата пътека към папката, която й е изпратена от ехо командата до края на кп команда. Предават се три аргумента xargs , но -n 1 опция на xargs командата му казва да добавя един от тези аргументи едновременно към кп командата всеки път, когато се изпълнява.

    Така че, за да се придържаме към нашия пример от по-рано, трите се разделят кп командите по-горе могат да бъдат комбинирани в една команда по следния начин:

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Документи / FileToBeCopied.txt

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

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

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

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