GNU/Linux >> Znalost Linux >  >> Linux

Zkopírujte soubor do více adresářů z příkazového řádku v systému Linux

V tomto stručném průvodci probereme, jak zkopírovat soubor do více adresářů z příkazového řádku pomocí find , cp , echo , xargs a tee příkazy v systému Linux.

Nedávno jsem chtěl zkopírovat některá videa do různých složek na ploše Arch Linuxu. Jak již víte, můžeme to snadno udělat kliknutím pravým tlačítkem myši na soubor, výběrem Copy z kontextové nabídky a vložte ji do cílového adresáře/složky.

Rád bych však věděl, zda existuje nějaký jiný způsob, jak zkopírovat soubor do více adresářů jedním tahem . Myslel jsem, že to pomůže, když chci zkopírovat jeden soubor do několika různých adresářů najednou. Provedl jsem několik vyhledávání na webu a přišel s následujícími řešeními.

Důležité upozornění:

Upozorňujeme, že následující příkazy nevyžadují žádné potvrzení. Pokud v cílovém adresáři existuje nějaký soubor se stejným názvem, bude automaticky nahrazen.

Pokud s Linuxem začínáte, doporučuji vám otestovat příkazy na jakémkoli testovacím stroji, než je začnete používat v produkci. Tímto způsobem můžete zabránit zbytečné ztrátě dat.

Zkopírujte soubor do více adresářů z příkazového řádku v systému Linux

Mám textový soubor s názvem ostechnix.txt v mém domovském adresáři a chtěl jsem jej zkopírovat do dvou různých adresářů s názvem Downloads a Documents jedním tahem.

Nejprve se podívejme, jak zkopírovat soubor do více různých adresářů pomocí find a cp příkazy.

Metoda 1:Použití příkazů find a cp

Pomocí find můžeme zkopírovat jeden soubor do více adresářů najednou a cp příkazy.

find je příkaz Unix a Linux k vyhledávání souborů v hierarchii adresářů a příkaz cp se používá ke kopírování souborů a adresářů.

Chcete-li zkopírovat soubor s názvem ostechnix.txt do ~/Downloads a ~/Documents adresáře pomocí find a cp příkaz, spusťte:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;

Výše uvedený příkaz zkopíruje soubor ostechnix.txt v aktuálním adresáři do ~/Downloads a ~/Documents adresáře.

Pokud nezadáte '-maxdepth 0' možnost, ostechnix.txt soubor bude zkopírován do  ~/Downloads , ~/Documents adresářů a také do jejich podadresářů. Takže to nezapomeňte specifikovat.

Jak jsem již dříve varoval, pokud již existuje nějaký soubor se stejným názvem (tj. ostechnix.txt ) v libovolném cílovém adresáři výše uvedený příkaz jednoduše přepíše existující soubor bez jakéhokoli potvrzení.

Pokud nechcete existující soubor přepsat, můžete použít -n příznak pomocí cp příkaz jako níže:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;

Nyní nenahradí cílový soubor, pokud již v cílových umístěních existuje.

Metoda 2:Použití příkazů echo, xargs a cp

Dalším způsobem, jak zkopírovat soubory do více umístění, je použití echo , xargs a cp příkazy.

Jak již víte, cp příkaz se používá ke kopírování souborů a adresářů a xargs příkaz se používá k vytváření a spouštění příkazových řádků ze standardního vstupu.

Chcete-li zkopírovat soubor do více adresářů pomocí echo , xargs a cp příkazy, spusťte:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt

Pojďme rozebrat výše uvedený příkaz a uvidíme, jak to funguje.

Obecně echo příkaz vypíše daný řetězec nebo text na standardní výstup. Ale v tomto případě zprostředkujeme výstup echo příkaz xargs . Zde echo příkaz odešle cestu k adresáři xargs jako vstup.

xargs příkaz spustí cp příkaz dvakrát a připojí cestu každého adresáře na konec cp příkaz.

xargs příkazy obdrží dva argumenty (tj. cestu k adresáři) z echo příkaz. -n 1 možnost na xargs příkaz říká xargs připojit pouze jeden z těchto argumentů najednou.

Opět platí, že výše uvedený příkaz nahradí cílový soubor, pokud již existuje. Pokud nechcete nahradit cílový soubor, přidejte -n příznak v příkazu:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt

Metoda 3 – Použití příkazu tee

Tee je nástroj pro Unix a Linux, který se používá ke čtení ze standardního vstupu a zápisu na standardní výstup a soubory.

Nyní zkopírujeme ostechnix.txt do dvou různých adresářů s názvem /home/sk/Downloads a /home/sk/Documents .

Chcete-li tak učinit, stačí spustit následující příkaz z terminálu:

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt

Výše uvedený příkaz zkopíruje ostechnix.txt soubor z domovského adresáře do ~/Downloads a ~/Documents adresář.

Vezměte prosím na vědomí, že tee příkaz také zapíše vstup na standardní výstup. Pokud nechcete tee Chcete-li to provést, přesměrujte standardní výstup na /dev/null jak je uvedeno níže.

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

Znovu vás varuji. Pokud již existuje nějaký soubor se stejným názvem (např. ostechnix.txt ) v umístěních, výše uvedený příkaz přepíše existující soubor.

Podrobnosti naleznete na stránkách manuálu výše uvedených příkazů:

$ man cp
$ man find
$ man xargs
$ man echo
$ man tee

Závěr

Takto zkopírujeme soubor do více adresářů najednou z příkazové řádky v Linuxu. Mohly by existovat i jiné způsoby, ale věřím, že tyto příkazy jsou velmi jednoduché a snadno použitelné.

Znovu se ujistěte, že jsou cílové cesty správné, a hlavně se ujistěte, že v cílovém umístění neexistuje žádný soubor se stejným názvem.

Související čtení:

  • Jak najít a zkopírovat určitý typ souborů z jednoho adresáře do druhého v systému Linux
  • Zkopírujte konkrétní typy souborů při zachování struktury adresářů v systému Linux
  • Kopírování souborů a vytváření cílových adresářů současně
  • Jak kopírovat soubory a měnit vlastnictví a oprávnění současně
  • Jak zachovat vlastnictví a oprávnění k souborům při kopírování souborů nebo adresářů
  • Obnovit částečně přenesené soubory přes SSH pomocí Rsync
  • Jak rychle přenášet velké soubory přes síť v Linuxu a Unixu
  • Pokročilé kopírování – přidání ukazatele průběhu do příkazů cp a mv v systému Linux
  • Zkopírujte obsah souboru do schránky bez jeho zobrazení

Linux
  1. Používání Disku Google z příkazového řádku systému Linux

  2. Linuxový příkaz cp

  3. Import PostgreSQL CSV z příkazového řádku

  1. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  2. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  3. Prohledávejte torrenty z příkazového řádku v Linuxu

  1. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  2. Odstranění konkrétních řádků ze souboru v příkazovém řádku Linuxu

  3. Jak zkopírovat soubor do více adresářů pomocí příkazu gnu cp