Як я можу рекурсивно шукати імена каталогів з певним рядком, де рядок є лише частиною імені каталогу


73

Як я можу рекурсивно шукати імена каталогів з певним рядком, де рядок є лише частиною імені каталогу?

Наприклад: ім'я каталогу "8.0.3-99966_en", але я хочу рекурсивно шукати каталоги з рядком "99966".

Відповіді:


95

Ви можете використовувати findкоманду:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Приклад:

find ~ -type d -name "*99966*" -print

слід знайти всі каталоги ( -type d), починаючи з домашнього каталогу ( ~), у яких є назви, що містять рядок "99966" ( -name "*99966*"), і вивести їх ( -print).


Як я можу виключити певний каталог із пошуку? Мені потрібно шукати / але я отримую тони результатів / proc, які мене не цікавлять.
Козуч

@Kuzuch (через деякий час!): Ви можете використовувати негативну греп, переводячи пошук sinf у такий текст, як: знайти <що б> не було grep -v "/ proc", який буде фільтрувати всі рядки, що містять рядок пошуку.
Хуан Ланус


8

Ви можете передавати висновок, щоб grepвін виділив ім'я каталогу
щось на зразок

find / -type d | grep "directory name"

/Вказує на пошук по всьому комп'ютеру


@Zanna ви маєте рацію, я відредагував відповідь. Дякуємо, що
Коллін

3

Простий спосіб зробити це - використовувати find | egrep string. Якщо звернень занадто багато, то використовуйте -type dпрапор для пошуку. Запустіть команду на початку дерева каталогів, яку ви хочете шукати, або вам доведеться також надати каталог як аргумент find.

Ще один спосіб зробити це - використовувати ls -laR | egrep ^d.

І locateкоманда також стане в нагоді:locate string

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.