2010-07-07 101 views
1

而在RHEL執行shell腳本,我面臨的一個複製命令問題5.cp命令在Linux中沒有

執行的指令是

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

誤差

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

請你扔一些想法爲什麼它會失敗?

謝謝 Robert。

+2

這不是一個編程問題,所以真的應該在http://superuser.com – Dipstick 2010-07-07 06:40:24

+1

@chrisharris:只要有3人投票遷移它,它就會是。 – 2010-07-07 07:10:21

+1

該命令應該做什麼?將多個文件複製到一個公共目標目錄或將多個文件連接成一個? – Philipp 2010-07-07 07:29:40

回答

1

你不能將多個多個文件複製到文件中,只有一個目錄,即

cp file1 file2 file2 file4 

是不可能的,你需要

cp file1 file2 file2 dir1 
+0

謝謝大家的意見。我明白了。我會去相應地更改代碼。 – Robo 2010-07-07 07:25:09

3

你不能多文件複製到一個位置除非該位置是一個目錄。

cp應該如此使用:cp sourcefile destinationfilecp source1 source2 destinationdir

5

cp被稱爲具有兩個以上的文件名作爲參數時,它將最後一個作爲目標目錄,並將其他參數中指定的所有文件複製到該目標目錄中。因此,例如,

cp file1 file2 dir3 

將創建dir3/file1dir3/file2。看來在你的情況下,模式/fir1/dir2/*/bin/file1匹配多個文件名,所以cp正試圖將find的結果作爲目標目錄 - 它不是 - 並且失敗。

2

正如其他人所說,您不能使用cp將多個文件複製到一個文件。另一方面,如果您想將多個文件的內容一起附加到一個目標文件中,您可以使用cat

例如:

cat file1 file2 file3 > destinationfile 
2

很難不知道你想達到什麼樣的回答。

如果,例如,要在目錄結構中的一個名爲「文件1」中的所有文件複製到目標位置的/ tmp,建立相同的目錄結構存在,這個命令就可以了:

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