cp aaa/deep/sea/blob.psd
欲しいbbb/deep/sea/blob.psd
deep
コピーが必要なディレクトリを作成し、ファイルをコピーし、ディレクトリがsea
存在しない場合はどのようにコピーを作成できますか?bbb
今私は
No such file or directory
深すぎて海が存在しません。
ヘルプページやその他の質問を見てみましたが、何も興味を持っていませんでした。
私が得た最も近いのはrcp
ディレクトリに関するものです。
rcp -r aaa/deep/sea/ bbb/deep/sea/
これはディレクトリ全体と内容をコピーしますが、単一のファイルだけが必要です。しかし、これを試してみるとcp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
答え1
install
プログラムを使用するのは簡単ですコアツール通常、次のビルドシステムでこの目的に使用されます。自動車メーカー:
install -D /path/to/source /path/to/destination
install
作成するので参考にしてくださいみんなパスの一部はと同じです。mkdir -p
を参照してください。man install
なぜ含めなかったのか疑問に思います。なぜあなたはこれをしたいです。電話はmkdir
とても便利ですcp
。
答え2
この場合は、次の機能を試してください。
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
そしてそれを次のように使用してください
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
ところで、GNUにはオプションがcp
あります--parents
。あなたが望むものに本当に近いですが、必ずしもそうではありません。
また、aaa
不要なディレクトリも作成します。ただし、まずCDを使用しaaa
て次のようにコピーできます。
cd aaa && cp --parents deep/sea/blob.psd ../bbb/
答え3
標準(POSIX / Unix)コマンドを使用すると、次のことができます。
pax -rws ':^:dest/dir/:' file .
答え4
cd aaa
pax -rw deep/sea/blob.psd ../bbb
1つもない場合pax
(標準化するにはあまり互換性がないため、POSIXではcpioとtarの標準代替として指定)、または代わりにcpio -p
使用tar -cf - … | tar -xf -
してください。