Domovská » jak » Jak kopírovat soubor do více adresářů pomocí jednoho příkazu v systému Linux

    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ů.