2014-09-13 202 views
1

如何将文件复制到具有完整文件目标路径的目录中?带全路径的Linux cp

当我使用:

cp --parents /etc/passwd /tmp 

我得到一个错误

cp: illegal option -- - usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file target_file cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file ... target_directory 

如果我使用this script

for line in "`cat fromDirs.txt`"; do find "$line" -type f \(-name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;; done 

也许有可能来串联变量,例如

-exec cp $line{} /tmp/ \;; done 
or 
-exec cp {} /tmp/$line \;; done 

???

+1

的第一个命令('CP --parents/etc/passwd文件/ tmp')对我来说工作正常。你使用的是什么实现/版本的'cp'? – 5gon12eder 2014-09-13 13:50:55

+2

我不知道!如何检查? – 2014-09-13 13:53:09

+0

尝试'cp --version'或参阅'man cp'。我的是'cp(GNU coreutils)8.22'。 – 5gon12eder 2014-09-13 13:54:02

回答

2

问题是您的cp版本不接受多选项。当它看到--parents它认为您正在尝试使用-选项(以及p,a,r等选项)。

可以效仿这样的:

source=/etc/passwd 
mkdir -p /tmp/$(dirname $source) 
cp $source /tmp/$source 
+1

好的,我可以在这个地方做什么?如何连接?以及如何改变我的脚本,看起来像你说的? – 2014-09-13 14:00:55

+0

@DmitrijHolkin:我编辑了我的答案以添加一些代码,您可以尝试。 – 2014-09-13 14:02:17