当使用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
当使用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
当前回答
mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt
其他回答
mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt
我不知道你用cp也能做到。
你可以用mkdir ..
mkdir -p /var/path/to/your/dir
编辑 参见lhunath关于合并cp的答案。
你也可以使用find命令:
find ./ -depth -print | cpio -pvd newdirpathname
Rsync是工作!
#file:
rsync -aqz _vimrc ~/.vimrc
#directory:
rsync -aqz _vim/ ~/.vim
没有这样的选择。你能做的就是在复制文件之前运行mkdir -p
我做了一个非常酷的脚本,你可以用来复制文件在不存在的位置
#!/bin/bash
if [ ! -d "$2" ]; then
mkdir -p "$2"
fi
cp -R "$1" "$2"
现在只需保存它,赋予它权限并使用
./cp-improved SOURCE DEST
我放了-R选项,但这只是一个草案,我知道它可以,你会在很多方面改进它。希望对你有所帮助