cat
само по себе не медленно.Но каждый раз, когда вы раскрываете подстановочный знак оболочки (? И *), оболочка будет читать и искать по всем именам файлов в этом каталоге, что очень медленно.
Также ядру потребуется время, чтобы найти файлкогда вы открываете его по имени, чего вы не можете избежать.Это зависит от используемой файловой системы (не указана в вопросе): некоторые файловые системы более интеллектуальны с огромными каталогами, чем другие.
Чтобы разобраться в этом, вам может быть полезно получить список файлов один раз :
ls > /tmp/filelist
... и затем с помощью grep
или аналогичного для выбора файлов из этого списка:
cat `grep foo /tmp/filelist` > /out/bar
После того, как вы разобрались в этом беспорядке, сделайтеОбязательно структурируйте хранилище / приложение таким образом, чтобы это больше никогда не повторилось.:) Также убедитесь, что rmdir
существует существующий каталог после того, как вы извлекли из него ваши файлы (повторное использование его для любых целей не будет эффективным, даже если в нем есть только один файл).