Какой смысл иметь звездочки до и после поискового запроса при использовании команды «найти»?

Какой смысл иметь звездочки до и после поискового запроса здесь?

find ~ -name "*bash*"

До сих пор я узнал, что звездочка означает найти ноль или более символов предыдущего символа, так как что применимо в этой команде, или здесь все по-другому?

2
задан 6 June 2019 в 13:42

2 ответа

Без этого вы просите найти для поиска в вашем каталоге $ HOME (~) файлы с именем "bash"; символы * допускают что-то | до и после «bash», что отличается от «bash».

find ~ -name "bash"

найдет файл с именем "bash", а не my_bash_script. Символ * до и после 'bash' меняет значение и позволяет ему найти файл с именами bash и my_bash_script,

1
ответ дан 6 June 2019 в 13:42

Что вы называете нулем или более символами, так это регулярное выражение - это расширенное сопоставление с шаблоном, используемое такими инструментами, как grep и awk.

В команде у вас звездочка (*) означает любой символ. Флаг -name просматривает только имена файлов при выполнении этого соответствия.

Тильда (~) обозначает домашний каталог пользователя, и обратите внимание, что команда find не знает, если. Когда команда вызывается, оболочка выполнит замену, и вместо этого команда увидит что-то вроде /home/jdoe.

Теперь find (будучи рекурсивной командой) будет проходить /home/jdoe (обозначено ~) и каждый подкаталог домашнего каталога, соответствующий любому файлу, в котором есть слово bash, так что соответствующие файлы будет ~/.bashrc или ~/.bashrc-local или даже ~/Pictures/wabash_2019.png

Теперь, если вы хотите использовать регулярное выражение, это будет обработано флагом -regex, где этот шаблон будет означать что-то еще полностью и, вероятно, победит ' не производит никакого выхода. Я не буду вдаваться в подробности регулярных выражений, потому что есть целые книги на эту тему. В этом случае регулярное выражение используется для очень простого сопоставления с образцом.

1
ответ дан 6 June 2019 в 13:42

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

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