Может быть что-то вроде
find . -type f | wc -l
будет делать трюк. Попробуйте выполнить команду из родительской папки.
Как насчет примера во-первых, здесь мы рекурсивно просматриваем все файлы с расширением .htm (без учета регистра):
$ tree
.
├── spam
│ ├── egg.htm
│ └── egg.Htm
├── spam.htm
└── spam.Htm
$ find . -type f -iname *.htm
./spam.htm
./spam.Htm
$ find . -type f -iname '*.htm'
./spam.htm
./spam/egg.htm
./spam/egg.Htm
./spam.Htm
Как вы можете видеть в первом случае, когда я не использовал любое цитирование -iname *.htm, имя файла было сначала подвергнуто расширению glob (*) (сделанное оболочкой, прежде чем find начнется), поскольку я не использовал никакую цитату и привел к:
find . -type f -iname spam.htm spam.Htm
т.е. все файлы в текущем каталоге с расширением .htm (без учета регистра). В результате, хотя подкаталог ./spam имеет два файла с расширением .htm, но они не будут найдены, поскольку мы теперь ищем файлы spam.htm или spam.Htm.
С другой стороны, в во втором случае find . -type f -iname '*.htm' мы использовали цитирование, чтобы имена файлов не были подвергнуты расширению glob, поэтому мы получим желаемый результат.
Я считаю, что то, что вы пытаетесь понять, это процесс под названием Quoting. Quoting работает с двойными кавычками и одинарными кавычками.
Если вы помещаете текст в двойные кавычки, все специальные символы, используемые оболочкой, теряют смысл, кроме $ (знак доллара), \ (обратная косая черта) и `(обратный тик).
Одиночные кавычки подавляют все разложения.
Escaping Персонажи также могут быть привлечены к вниманию в таких ситуациях. Вы можете предшествовать символу с \ (обратная косая черта), чтобы превратить его в символ Escaping. Это часто делается внутри двойных кавычек, чтобы выборочно предотвратить расширение.
echo "This bowl costs \$10.00"
This bowl costs $10.00
Здесь $ будет считаться символом Escape.