Прежде всего, `ls *` не так. Тот же намеченный результат может быть достигнут с помощью просто * , как в:
tftp -m binary 192.168.1.2 -c put * target/
Расширения с подстановочными знаками обрабатываются вашей оболочкой перед выполнением команды, поэтому правильный способ расширения * до списка файлов - просто использовать *, а не `ls` .
Во-вторых, команда tftp put может загружать несколько файлов, но при этом она принимает только один каталог назначения . Вам не нужно указывать несколько целей, и все равно это не будет работать - tftp не будет знать, где заканчиваются исходные файлы и начинаются целевые файлы. (Как говорилось ранее, подстановочные знаки расширяются вашей оболочкой, поэтому tftp получит put file1 file2 file3 , а не put * .)
Загадочное : вызвано тем, что ls перечисляет содержимое подкаталогов. Когда вы запускаете ls * , оболочка фактически запускает ls file1 file2 dir1 (предположим, у вас есть два файла и каталог). Затем ls печатает « file1 », « file2 », а затем « dir1: (...all files in dir1...) ».