Выход ls через канал представляет собой сплошной блок данных с 0x0a, разделяющим каждую строку, то есть символ перевода строки, и file получает это как один параметр, где он ожидает, что несколько символов будут работать на одном из time.
Как правило, никогда не используйте ls для генерации источника данных для других команд - в один прекрасный день он будет транслироваться в rm, а затем у вас проблемы!
Лучше использовать цикл, например for i in *; do file "$i" ; done, который будет выдавать желаемый результат. Кавычки существуют в случае имен файлов с пробелами.