Ответы:
Или...
find $directory_name -name \*.sql
Например
find / -name \*.sql
Или
find ~ \*.sql
(где ~ равно / home / your_username /) или ...
find /usr/local/share/ \*.sql
и так далее.
Запустите это в командной строке:
cd / && find | grep '\.sql$'
Измените '/' на каталог, который вы хотите найти.
Команда find
способна выполнить задачу без grep (используя дополнительные параметры), но я считаю, что приведенное выше использование более удобно.
По порядку вышеприведенная команда:
cd /
)find
)| grep '\.sql$'
)find
уже имеет возможности фильтра
Я знаю, что это старый пост, но я довольно нов в этом, и я нашел простой способ найти все файлы определенного расширения в каталоге и его дочерних подкаталогах. Ну, сначала вы перейдете к parent Directory
тому, find . -name '*.sql'
и тогда вы найдете все файлы с расширением .sql в каталогах и их подкаталогах.
В моем случае я хотел удалить все XML- файлы в каталоге и его подкаталогах, так что я сделал больше, что я добавил удалить, как здесьfind . -name '*.xml' | xargs rm
Надеюсь, это поможет кому-то :)
find
понимает -delete
команду. Не нужно привлекать rm
. Или вы можете использовать -exec
команду, чтобы вызвать ее напрямую, без обхода через канал и xargs
.
locate -br \\.sql$ | egrep '^/folder/path/'
Если он не установлен, предварительно установите его с помощью:
sudo apt install mlocate
mlocate.db
экземпляр, который не настроен из коробки в Ubuntu (я полагаю). Кроме того, почему бы не просто locate '/folder/path/*.sql'
?
locate
есть несколько другие настройки, чем в регулярном выраженииegrep
locate
Соответствует глобальным выражениям, таким как /folder/path/*.sql
регулярные выражения.
man locate
я понял, -r, --regexp REGEXP - Search for a basic regexp REGEXP
что предположил, что это регулярное выражение. Во всяком случае, я попробовал ваше «глобальное выражение», но не работает, извините
--regex
не указано, то PATTERN
s может содержать символы-заглушки». ( Источник )