Jak kopírovat soubor do více adresářů pomocí jednoho příkazu 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 cp
příkazem, propojením se zdrojovým a cílovým adresářem:
cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles /
Chcete-li jej zkopírovat do dvou dalších adresářů, mnoho lidí by spustilo příkaz ještě dvakrát, s různými cíli:
cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Dokumenty / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Můžeme však udělat stejný úkol jedním příkazem:
echo dir1 dir2 dir3 | xargs -n 1 cp soubor1
Zde je návod, jak tento příkaz funguje. The echo
příkaz normálně zapíše na obrazovku. V tomto případě však chceme napájet výstup z echo
příkaz jako vstup do xargs
příkaz. K tomu použijeme symbol potrubí ( |. |
), který napájí výstup z jednoho příkazu jako vstup do jiného. The xargs
příkaz spustí cp
příkazu třikrát, pokaždé připojit další cestu adresáře piped k němu z echo
příkaz do konce cp
příkaz. K dispozici jsou tři argumenty xargs
, ale -n 1
možnost na xargs
příkaz říká, že má připojit pouze jeden z těchto argumentů najednou cp
příkazu pokaždé, když je spuštěn.
Takže, abychom drželi náš příklad 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 ~ / Dokumenty / FileToBeCopied.txt
Všimněte si, že pokud je soubor, který je zkopírován, existuje v libovolném zadaném cílovém adresáři, soubor v tomto cíli bude automaticky nahrazen. Nebudete dotázáni, zda chcete soubor nahradit. (Obvykle při použití cp
příkaz kopírovat soubor do jediného umístění, můžete přidat -i
možnost se zeptat, jestli chcete nahradit existující soubor. Nicméně, -i
volba je interaktivní volba (způsobuje to cp
příkaz požádat o vstup od uživatele) a nemůžete používat interaktivní možnost s cp
příkaz při jeho použití ve spojení s xargs
.).
Jedna další věc, kterou je třeba zvážit, je, že pokud kopírujete velmi velký soubor, možná budete chtít přidat "no-clobber" ( -n
) k volbě cp
příkaz ve výše uvedeném jediné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é k kopírování a nahrazení souboru. Následující příkaz přidá příkaz -n
a nebude kopírovat soubor na libovolný cíl uvedený v argumentu do příkazu echo, pokud soubor již v daném cílovém umístění existuje.
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Dokumenty / FileToBeCopied.txt
Zadejte příkaz man echo, man xargs nebo man cp na příkazovém řádku v systému Linux, kde naleznete další informace o kterémkoli z těchto příkazů.