2014-09-13 66 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