Відповіді:
Або ...
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
не вказано, PATTERN
s може містити символи глобуса." ( Джерело )