cp命令在Linux中失败

时间:2010-07-07 06:25:59

标签: linux

在RHEL 5中执行shell脚本时,我遇到了复制命令问题。

执行的命令是

cp -fp /fir1/dir2/*/bin/file1 `find . -name file1 -print`

错误是

cp: Target ./6e0476aec9667638c87da1b17b6ccf46/file1 must be a directory

请你提出一些想法,为什么会失败?

由于 罗伯特。

5 个答案:

答案 0 :(得分:5)

当使用两个以上的文件名作为参数调用cp时,它会将最后一个文件名视为目标目录,并将其他参数中指定的所有文件复制到该目标目录中。所以,例如,

cp file1 file2 dir3

将创建dir3/file1dir3/file2。在您的情况下,模式/fir1/dir2/*/bin/file1似乎匹配多个文件名,因此cp正在尝试将find的结果视为目标目录 - 它不是 - 并且失败。

答案 1 :(得分:3)

您不能将许多文件复制到一个位置,除非该位置是目录。

因此应该使用

cp:cp sourcefile destinationfilecp source1 source2 destinationdir

答案 2 :(得分:2)

正如其他人所说,您无法使用cp将多个文件复制到一个文件中。另一方面,如果要将多个文件的内容一起附加到一个目标文件中,可以使用cat

例如:

cat file1 file2 file3 > destinationfile

答案 3 :(得分:2)

如果不知道你想要达到的目标,就很难回答。

例如,如果要将目录结构中名为“file1”的所有文件复制到目标位置/ tmp,在那里构建相同的目录结构,则此命令将起作用:

cd /dir1/dir2
find . -name file1 | cpio -pvd /tmp

答案 4 :(得分:1)

您不能将多个多个文件复制到文件中,只能复制到目录,即

cp file1 file2 file2 file4 

是不可能的,你需要

cp file1 file2 file2 dir1