Почему иногда find находит ., а иногда нет?

Почему иногда find находит ., а иногда нет?
find -name "?"
find ~ -name "?"

Почему одна из этих команд находит, .а другая нет? Как сделать так, чтобы вторая версия с явным путем нашла запись .вместе с любым другим односимвольным файлом в указанном каталоге?

find (GNU findutils) 4.5.11если это имеет значение...

решение1

Без starting pointfor findон использует .(текущий каталог). Фактически, эти две строки дадут идентичный вывод:

find -name "?"
find . -name "?"

Чтобы иметь возможность указать отправную точкуинайдите findкаталог ., добавьте /.в свою начальную точку, т.е.:

find ~/. -name "?"

Редактировать: Теперь, чтобы узнать почему, давайте сравним эти две команды:

find ~/. -name "?"
find ~ -name "?"

В их выводе есть два отличия. Во-первых, команда с /.выдает результаты с дополнительным /.в каждой строке, как и ожидалось. Во-вторых, и это был основной вопрос OP, команда /.находит ~/.сам псевдокаталог, но ~команда не находит. Это потому, что ~/.поиск явно запрашивает для .поиска. Если он не указан в findкомандной строке, findигнорирует .и ..псевдокаталоги. (Можете себе представить, если бы это было не так?)

man findБолее подробную информацию см .

Связанный контент