/ Jak zkopírovat soubor do více adresářů jedním příkazem v Linuxu

Jak zkopírovat soubor do více adresářů s jedním příkazem v Linuxu

00_lead_image_copying_to_three_locations_with_one_command

Kopírování souboru pomocí příkazového řádku systému Linux jesnadný. Co když však chcete zkopírovat stejný soubor na několik různých umístění? To je také snadné a my vám ukážeme, jak to udělat jedním příkazem.

Normálně byste pro kopírování jednoho souboru použili cp příkaz, odkaz na zdrojový soubor a cílový adresář:

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

Chcete-li jej zkopírovat do dvou dalších adresářů, mnoho lidí by příkaz spustilo ještě dvakrát, s různými cíli:

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

01_entering_cp_command_three_times

Stejný úkol však můžeme provést jedním příkazem:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Takto tento příkaz funguje. echo příkaz normálně zapíše na obrazovku. V tomto případě však chceme nakrmit výstup echo příkaz jako vstup do xargs příkaz. K tomu použijeme symbol potrubí ( | ), který dodává výstup z jednoho příkazu jako vstup do druhého. xargs příkaz spustí cp Příkaz třikrát, pokaždé, když k němu připojíte další cestu k adresáři z echo příkaz na konec cp příkaz. Jsou předány tři argumenty xargs , ale -n 1 možnost na xargs Příkaz říká, že připojí pouze jeden z těchto argumentů současně cp příkaz pokaždé, když je spuštěn.

Takže, držet se našeho příkladu z dřívějších, tři oddělené cp příkazy výše lze kombinovat do jednoho příkazu, jako je tento:

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

02_using_single_command

Všimněte si, že pokud kopírovaný soubor v nějakém existujeze zadaných cílových adresářů bude soubor v tomto cílovém adresáři automaticky nahrazen. Budete dotázáni, zda chcete soubor nahradit. (Normálně, když používáte cp příkaz zkopírovat soubor do jediného umístění, můžete přidat -i možnost se zeptat, zda chcete nahradit existující soubor. Nicméně, -i možnost je interaktivní možnost (způsobuje cp příkaz k zadání požadavku od uživatele) a nemůžete použít interaktivní možnost s cp příkaz při použití ve spojení s xargs .)

Další věc, kterou byste měli zvážit, je, že pokud kopírujete velmi velký soubor, můžete přidat ne-clobber ( -n ) možnost do cp příkaz v jediném příkazu výše. Tato možnost automaticky zabrání přepsání souboru v cílovém místě, pokud již existuje. Pokud kopírujete velmi velký soubor v síti, může to být pomalé a možná budete chtít zabránit použití prostředků potřebných ke kopírování a nahrazení souboru. Následující příkaz přidá -n a nebude zkopírovat soubor do žádného cíle uvedeného v argumentech příkazu echo, pokud soubor již v tomto cíli existuje.

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

03_single_command_with_no_clobber

Na příkazovém řádku v systému Linux zadejte příkaz man echo, man xargs nebo man cp, abyste získali další informace o těchto příkazech.