[英]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.