Відповіді:
Або ...
find $directory_name -name \*.sql
Наприклад
find / -name \*.sql
Або
find ~ \*.sql
(де ~ дорівнює / home / your_username /), або ...
find /usr/local/share/ \*.sql
і так далі.
Виконайте це в командному рядку:
cd / && find | grep '\.sql$'
Змініть '/' в каталог, який ви хочете шукати.
The 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 може містити символи глобуса." ( Джерело )