GNU/Linux >> Znalost Linux >  >> Linux

Jak zkopírovat soubor a vytvořit cílové adresáře současně?

Chci cp aaa/deep/sea/blob.psd na bbb/deep/sea/blob.psd

Jak provedu kopii, pokud je deep a sea adresáře pod bbb neexistují takže kopie vytvoří potřebné adresáře a zkopíruje soubor?

Právě teď vidím
No such file or directory jako hlubina a moře neexistují.

Prohlédl jsem si stránky nápovědy pro muže a další otázky, ale nic mě nenapadlo.

Nejbližší mi je použití rcp pro adresář:

rcp -r aaa/deep/sea/ bbb/deep/sea/

ačkoli to zkopíruje celý adresář a obsah a já chci jen jeden soubor. Pokus o to však dal cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory

Přijatá odpověď:

Zkuste pro takovou situaci použít následující funkci:

copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }

a použijte jej jako

copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd

Mimochodem, GNU cp--parents volba. Je to opravdu blízko tomu, co chcete, ale ne přesně.
Vytvoří také aaa adresář, který zdánlivě nepotřebujete. Můžete však nejprve cd do aaa a zkopírujte jako:

cd aaa && cp --parents deep/sea/blob.psd ../bbb/

Linux
  1. Výstup do Stdout a zároveň Grep do souboru?

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

  3. Kopírovat a chmod/chown zároveň

  1. Jak kopírovat soubory a měnit vlastnictví, oprávnění současně

  2. Jak vytvořit a dotazovat souborový systém BTRFS

  3. Ping a tcpdump současně

  1. Jak vytvořit a upravit výchozí soubor WordPress .htaccess

  2. Jak získat aktuální datum a čas v Pythonu

  3. Linux:Jak použít soubor jako vstup a výstup zároveň?