Bash предлагает несколько команд для поиска файлов и для поиска по содержимому файлов:
- locate
Эта утилита доступна, только если вы установили пакет
findutils-locate
. При помощи этой команды вы можете узнать, в каком каталоге находится указанный файл. Если требуется, используйте безразличные символы для указания имен файлов. Программа очень быстрая, потому что она использует базу данных, специально созданную для этой цели (вместо того, чтобы искать по всей файловой системе). Этот самый факт, тем не менее, приводит к большому недостатку: locate не может найти файлы, созданные после последнего обновления своей базы данных. База данных может быть создана отroot
запуском updatedb.- find
При помощи find вы можете искать файл в данном каталоге. Первый аргумент указывает каталог, к котором начать поиск. За опцией -name должна следовать строка поиска, которая может также включать безразличные символы. В отличие от locate, которая использует базу данных, find сканирует реальный каталог.
- grep
Команда grep ищет указанную строку поиска в указанных текстовых файлах. Если строка поиска не найдена, команда показывает строку, в которой
строка_поиска
была найдена вместе с именем файла. Если требуется, используйте безразличные символы для указания имен файлов.
Рабочие столы KDE и GNOME хранят специфичные для пользователя данные в скрытых каталогах, например .kde
и .gnome
.
Для нахождения этих каталогов на вашем компьютере введите
locate .kde
, если у вас установлен рабочий стол KDE, или
locate .gnome
если у вас установлен рабочий стол GNOME.
Вы увидите, что locate показывает все имена файлов в базе данных, которые где-либо содержат строку
.kde
или.gnome
. Для того, чтобы узнать, как изменить такое поведение, обратитесь к странице man locate.Для поиска в вашем домашнем каталоге всех встретившихся имен файлов, которые содержат расширение
.txt
, используйтеfind ~ -name *.txt
Для поиска в каталоге (в этом случае, в вашем домашнем каталоге) всех встретившихся файлов, которые содержат, например, слово
music
, введитеgrep music ~*.*
Заметьте, что grep чувствителен к регистру —, кроме тех случаев, когда вы используете его с параметром
-i
. При помощи вышеуказанной команды вы не найдете никаких файлов, содержащихMusic
.Если вы хотите использовать строку поиска, состоящую из более чем одного слова, заключите строку в двойные кавычки, например:
grep "music is great" ~*.*