При использовании find
команда, почему это, что следующее успешно проигнорирует скрытые каталоги (те, которые запускаются с периода) при соответствии всему остальному:
find . -not \( -type d -name ".?*" -prune \)
но это не будет соответствовать ничему вообще:
find . -not \( -type d -name ".*" -prune \)
Единственной разницей является вопросительный знак. Разве последний не должен управлять, аналогично обнаруживают и исключают каталоги, начинающиеся с периода?
Последняя команда обрезает все, потому что обрезает .
- попробуйте их, чтобы увидеть разницу:
$ ls -lad .*
.
..
.dotdir
$ ls -lad .?*
..
.dotdir
Вы видите, что во второй команде, .
не включена, потому что она состоит только из одного символа. Глобус "...*
" включает в себя только имена файлов, длина которых как минимум два символа (точка, плюс любой одиночный символ, необязательно, плюс любая последовательность из нуля или более символов).
Кстати, find
не является командой Bash.
Последняя команда обрезает . Сама
-- каталог, в котором вы выполняете , не находит
-- поэтому не выдает результатов.