Mic*_*ant 20 directory file-copy
我想cp aaa/deep/sea/blob.psd
,以bbb/deep/sea/blob.psd
如果deep
和sea
目录不存在,我该如何进行复制,bbb
以便复制既创建所需的目录又复制文件?
现在我变得
No such file or directory
很深,海不存在。
我查看了 man 帮助页面和其他问题,但没有任何反应。
我最接近的是rcp
用于目录:
rcp -r aaa/deep/sea/ bbb/deep/sea/
Run Code Online (Sandbox Code Playgroud)
虽然这会复制整个目录和内容,但我只想要一个文件。尝试这样做但是给了cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Pav*_*rda 24
使用coreutils中的install
程序很容易,该程序通常由像automake这样的构建系统用于此目的:
install -D /path/to/source /path/to/destination
Run Code Online (Sandbox Code Playgroud)
请注意,就像install
创建路径的所有部分一样mkdir -p
,请参阅man install
。我很好奇你为什么不包括你为什么要这样做。打电话mkdir
,cp
很容易。
rus*_*ush 19
尝试在这种情况下使用这样的 next 函数:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
Run Code Online (Sandbox Code Playgroud)
并将其用作
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
Run Code Online (Sandbox Code Playgroud)
顺便说一下,GNUcp
有一个--parents
选项。它真的很接近你想要的,但不完全是。
它还将创建aaa
您似乎不需要的目录。但是,您可以先 cd 到aaa
并复制如下:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/
Run Code Online (Sandbox Code Playgroud)
我不知道使用 的方法cp
,但肯定可以使用rsync
:
$ rsync sourcefile dir/
Run Code Online (Sandbox Code Playgroud)
wheredir
是一个不必存在的目录。使用其他命令还有很多其他方法可以实现相同的目标。
归档时间: |
|
查看次数: |
20731 次 |
最近记录: |