28Jun

Jak kopírovat soubor do více adresářů s jedním příkazem v systému Linux

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

Obvykle byste měli kopírovat jeden soubor, použijte příkaz cp, který propojí zdrojový soubor a cílový adresář:

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

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

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

Můžeme však udělat stejnou úlohu jedním příkazem:

echo dir1 dir2 dir3 |xargs -n 1 cp file1

Zde je návod, jak tento příkaz funguje. Příkaz echo obvykle zapíná na obrazovku. V tomto případě však chceme dát výstup příkazu echo jako vstup do příkazu xargs. K tomu použijeme symbol potrubí( |), který napájí výstup z jednoho příkazu jako vstup do jiného. Příkaz xargs spustí příkaz cp třikrát, vždy když připojí další cestu k adresáři, která je k němu přivedena z příkazu echo na konec příkazu cp. Do xargů jsou předány tři argumenty, ale volba -n 1 příkazu xargs mu říká, že při každém spuštění příkazu cp připojuje pouze jeden z těchto argumentů.

Abychom se drželi našeho příkladu z dřívějších, mohou být tři samostatné příkazy cp kombinovány do jednoho příkazu:

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

Všimněte si, že pokud je kopírovaný soubor v libovolném zadaném adresáři určen, bude soubor v tomto místě automaticky nahrazen. Nebudete dotázáni, zda chcete soubor nahradit.(Obvykle, když použijete příkaz cp k zkopírování souboru do jediného umístění, můžete přidat možnost -i a zeptat se, zda chcete nahradit existující soubor. Nicméně možnost -i je interaktivní volba( způsobuje tocp příkaz požádat o vstup od uživatele) a nemůžete použít interaktivní možnost s příkazem cp při jeho použití ve spojení s xargs.)

Jedna věc, kterou je třeba zvážit, je, že pokud kopírujete velmi velký soubor,chcete přidat příkaz no-clobber( -n) příkazu cp v jediném výše uvedeném příkazu. Tato možnost automaticky zabraňuje přepsání souboru v cílovém umístění, pokud již existuje. Pokud kopírujete velmi rozsáhlý soubor v síti, může být pomalý a pravděpodobně nebudete potřebovat prostředky potřebné pro kopírování a nahrazování souboru. Následující příkaz přidá volbu -n a nebude kopírovat soubor na libovolný cíl uvedený v argumentu do příkazu echo, pokud soubor již existuje v daném cílovém umístění.

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

Zadejte příkaz man echo, man xargs nebo man cp na příkazovém řádku v Linuxu, kde naleznete další informace o kterémkoli z těchto příkazů.