Назад | Перейти на главную страницу

Как найти все имена файлов с заданным расширением

Мне нужно найти все .pem файлы в моей системе. Будет ли это делать следующее?

sudo find / -type f -name *.pem

Если нет, как мне написать команду поиска, чтобы найти каждый файл такого типа?

Вы на правильном пути - вам просто нужно процитировать шаблон, чтобы он был интерпретирован find а не вашей оболочкой:

sudo find / -type f -name '*.pem'

С помощью find / обычно будет очень медленным. С помощью locate намного быстрее, но несколько неточно, потому что не поддерживает ничего более сложного, чем сопоставление подстрок. Каталог под названием .pembroke будет найден и возвращен locate вместе с каждым файлом внутри него.

Сочетание locate и grepоднако имеет скорость и точность. Удобно, также не требует sudo.

locate .pem | grep "\.pem$"

Обратная сторона? База данных locate use обычно обновляется только один раз в день, поэтому любые недавние изменения (добавления, удаления, изменения имени и т. д.) не будут обнаружены.

Почти!

sudo find / -type f -name \*.pem

или

sudo find / -type f -name "*.pem"

в противном случае оболочка интерпретирует * вместо find.

... или если mlocate работает на вашем компьютере и вам не нужны самые актуальные данные, используйте команду locate

locate *.pam

Это быстрее, так как находит файлы в ранее созданной базе данных; не во всей системе.

sudo find / | grep .pam

Думаю, это должно сработать.