cp
не зависает при генерации этого сообщения. Это просто пропускает файл. Добавьте подробный текст (cp -vr $i $p
), и вы увидите, что он либо занят копированием других файлов, либо, наоборот, что-то еще в вашем скрипте зависает.
cp
на самом деле не имеет способа исключить файлы, из которых он рекурсивно перезаписывается. Если вы хотите этого, вам придется переключиться на что-то более функциональное, например tar
(возможно, с find
) или rsync
.
Кроме того, вы должны действительно процитировать свои аргументы, на случай, если они содержат пробелы: cp -r "$i" "$p"