[英]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/file1
和dir3/file2
。 看来,在您的情况下,模式/fir1/dir2/*/bin/file1
匹配多个文件名,因此cp
试图将find
结果视为目标目录-并非如此-并失败。
您不能将许多文件复制到一个位置,除非该位置是一个目录。
因此应使用cp sourcefile destinationfile
: cp sourcefile destinationfile
或cp 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.