mkdir -p "$d" && cp file "$d"
(il n'y a pas une telle option pour cp
).
Si les deux conditions suivantes sont vraies :
- Vous utilisez la version GNU de
cp
(et non, par exemple, la version Mac), et - Vous copiez à partir d'une structure de répertoires existante et vous avez juste besoin de la recréer
alors vous pouvez le faire avec le --parents
drapeau de cp
. Depuis la page d'informations (affichable sur http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation ou avec info cp
ou man cp
):
--parents Form the name of each destination file by appending to the target directory a slash and the specified name of the source file. The last argument given to `cp' must be the name of an existing directory. For example, the command: cp --parents a/b/c existing_dir copies the file `a/b/c' to `existing_dir/a/b/c', creating any missing intermediate directories.
Exemple :
/tmp $ mkdir foo
/tmp $ mkdir foo/foo
/tmp $ touch foo/foo/foo.txt
/tmp $ mkdir bar
/tmp $ cp --parents foo/foo/foo.txt bar
/tmp $ ls bar/foo/foo
foo.txt