繁体   English   中英

cp命令在Linux中失败

[英]cp command failing in Linux

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

执行的命令是

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

错误是

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

您能否提出一些想法,为什么会失败?

谢谢罗伯特。

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

cp file1 file2 dir3

将创建dir3/file1dir3/file2 看来,在您的情况下,模式/fir1/dir2/*/bin/file1匹配多个文件名,因此cp试图将find结果视为目标目录-并非如此-并失败。

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

因此应使用cp sourcefile destinationfilecp sourcefile destinationfilecp source1 source2 destinationdir

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

例如:

cat file1 file2 file3 > destinationfile

不知道自己要达到的目标很难回答。

例如,如果您要将目录结构中所有名为“ file1”的文件复制到目标位置/ tmp,并在其中构建相同的目录结构,则此命令可以解决问题:

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

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

cp file1 file2 file2 file4 

是不可能的,你需要

cp file1 file2 file2 dir1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM