Если синтаксический анализ выходных данных lsопасен, поскольку он может разбиваться на некоторые забавные символы (пробелы \n, ...), каков наилучший способ узнать количество файлов в каталоге?
Я обычно полагаюсь на то, findчтобы избежать этого анализа, но, аналогично, find mydir | wc -lсломается по тем же причинам.
Я сейчас работаю над Solaris, но я ищу ответ, который был бы более разборчивым для разных юнитов и разных оболочек.
findполучит рекурсивное количество файлов (используйте, -maxdepth 1если вы этого не хотите. find mydir -maxdepth 1 -type f -printf \\n | wc -lдолжны обрабатывать специальные символы в имени файла, так как они никогда не печатаются в первую очередь.