Как вы сказали в комментарии, пробелы - это проблема. Когда вы создаете массив, все пробелы действуют как разделитель, поэтому вы получаете ошибки «not found», потому что вы пытаетесь обработать частичные имена файлов.
Вы должны начать с создания правильного списка файлов :
mapfile -d $'\0' array < <(find * -iname "*.tar" -print0)
В этой команде вы указываете find
разделять результаты на ноль, а затем подаете его на mapfile
для хранения всего в array
, интерпретируя ноль как разделитель записей .
Теперь вы можете обработать этот список, который теперь правильно маркирован, с остальной частью вашего скрипта. Но остерегайтесь пробелов! Вы не должны позволять оболочке выполнять свою обычную обработку имен файлов, поэтому вы должны указать все свои переменные:
destination="$HOME/Desktop/NEW"
for val in "${array[@]}"
do
cp "$val" "$destination"
read -n 1 -r -s -p $'press enter to continue...\n'
done