сбой команды cp в Linux - PullRequest
       6

сбой команды cp в Linux

1 голос
/ 07 июля 2010

У меня проблема с командой копирования при выполнении сценария оболочки в RHEL 5.

Выполненная команда

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

Ошибка

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

Не могли бы выподскажите какие-нибудь идеи, почему это не получится?

Спасибо, Роберт.

Ответы [ 5 ]

5 голосов
/ 07 июля 2010

Когда cp вызывается с более чем двумя именами файлов в качестве аргументов, он обрабатывает последнее как целевой каталог и копирует все файлы, названные в других аргументах, в этот целевой каталог.Так, например,

cp file1 file2 dir3

создаст dir3/file1 и dir3/file2.Похоже, что в вашем случае шаблон /fir1/dir2/*/bin/file1 соответствует более чем одному имени файла, поэтому cp пытается обработать результат find как целевой каталог - а это не так - и не удается.

3 голосов
/ 07 июля 2010

Вы не можете скопировать много файлов в одно место, если это место не является каталогом.

cp следует использовать таким образом: cp sourcefile destinationfile или cp source1 source2 destinationdir.

2 голосов
/ 07 июля 2010

трудно ответить, не зная, чего вы пытаетесь достичь.

Если, например, вы хотите скопировать все файлы с именем «file1» в структуре каталогов в целевое место / tmp, создав там ту же структуру каталогов, эта команда выполнит свою задачу:

cd /dir1/dir2
find . -name file1 | cpio -pvd /tmp
2 голосов
/ 07 июля 2010

Как говорили другие, вы не можете скопировать несколько файлов в один файл, используя cp.С другой стороны, если вы хотите добавить содержимое нескольких файлов в один файл назначения, вы можете использовать cat.

Например:

cat file1 file2 file3 > destinationfile
1 голос
/ 07 июля 2010

Вы не можете скопировать несколько файлов в файл, только в каталог, т.е.

cp file1 file2 file2 file4 

невозможно, нужно

cp file1 file2 file2 dir1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...