Почему звездочка производит неожиданные результаты поиска? [Дубликат]

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

1
задан 4 March 2018 в 19:47

2 ответа

Как насчет примера во-первых, здесь мы рекурсивно просматриваем все файлы с расширением .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, поэтому мы получим желаемый результат.

0
ответ дан 23 May 2018 в 18:46

Я считаю, что то, что вы пытаетесь понять, это процесс под названием Quoting. Quoting работает с двойными кавычками и одинарными кавычками.

Если вы помещаете текст в двойные кавычки, все специальные символы, используемые оболочкой, теряют смысл, кроме $ (знак доллара), \ (обратная косая черта) и `(обратный тик).

Одиночные кавычки подавляют все разложения.

Escaping Персонажи также могут быть привлечены к вниманию в таких ситуациях. Вы можете предшествовать символу с \ (обратная косая черта), чтобы превратить его в символ Escaping. Это часто делается внутри двойных кавычек, чтобы выборочно предотвратить расширение.

echo "This bowl costs \$10.00"
This bowl costs $10.00

Здесь $ будет считаться символом Escape.

0
ответ дан 23 May 2018 в 18:46

Другие вопросы по тегам:

Похожие вопросы: