Ответы:
Или...
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не указано, то PATTERNs может содержать символы-заглушки». ( Источник )