将文件复制cp到可能存在或不存在cp的文件夹时,如何在必要时创建文件夹?这是我尝试过的:
[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)
lhu*_*ath 249
为了扩展Christian的答案,唯一可行的方法是结合mkdir并cp:
mkdir -p /foo/bar && cp myfile "$_"
Run Code Online (Sandbox Code Playgroud)
另外,当您只需要在现有层次结构中创建单个目录时,rsync可以在一个操作中执行此操作.事实上,我非常rsync喜欢更多功能的cp替代品:
rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't. bar is created.
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 104
我不知道你能用cp做到这一点.
你可以用mkdir来做..
mkdir -p /var/path/to/your/dir
Run Code Online (Sandbox Code Playgroud)
编辑 请参阅lhunath 关于合并cp 的答案.
eyt*_*ort 24
对于那些使用Mac OSX的人来说,解决这个问题的最简单方法可能是使用ditto(仅限于mac,AFAIK).它将创建目标中缺少的目录结构.
例如,我这样做了
ditto 6.3.2/6.3.2/macosx/bin/mybinary ~/work/binaries/macosx/6.3.2/
Run Code Online (Sandbox Code Playgroud)
在~/work运行命令之前,哪里没有包含二进制目录.
我认为rsync应该工作类似,但它似乎只适用于一个级别的丢失目录.那是,
rsync 6.3.3/6.3.3/macosx/bin/mybinary ~/work/binaries/macosx/6.3.3/
Run Code Online (Sandbox Code Playgroud)
工作,因为〜/ work/binaries/macosx存在但不是〜/ work/binaries/macosx/6.3.2 /
Jam*_*dle 22
mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt
Run Code Online (Sandbox Code Playgroud)
vic*_*ugo 18
没有这样的选择.你可以做的是在复制文件之前运行mkdir -p
我制作了一个非常酷的脚本,您可以用它来复制不存在的位置的文件
#!/bin/bash
if [ ! -d "$2" ]; then
mkdir -p "$2"
fi
cp -R "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
现在只需保存它,赋予它权限并使用它运行它
./cp-improved SOURCE DEST
Run Code Online (Sandbox Code Playgroud)
我把-R选项,但它只是一个草稿,我知道它可以,你会在很多方面改进它.希望它能帮到你
小智 17
也可以使用命令find:
find ./ -depth -print | cpio -pvd newdirpathname
Run Code Online (Sandbox Code Playgroud)
Chu*_*Lai 10
rsync是有效的!
#file:
rsync -aqz _vimrc ~/.vimrc
#directory:
rsync -aqz _vim/ ~/.vim
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
443394 次 |
| 最近记录: |