Поиск по сайту:

Как найти файлы и папки в Linux с помощью командной строки


Большинство людей используют графический файловый менеджер для поиска файлов в Linux, например Nautilus в Gnome, Dolphin в KDE и Thunar в Xfce. Однако есть несколько способов использовать командную строку для поиска файлов в Linux, независимо от того, какой менеджер рабочего стола вы используете.

Использование команды «Найти»

Команда «найти» позволяет вам искать файлы, для которых вы знаете приблизительные имена файлов. Простейшая форма команды ищет файлы в текущем каталоге и рекурсивно через его подкаталоги, соответствующие заданным критериям поиска. Вы можете искать файлы по имени, владельцу, группе, типу, разрешениям, дате и другим критериям.

Ввод следующей команды в приглашении выводит список всех файлов, найденных в текущем каталоге.

find .

Точка после «найти» указывает на текущий каталог.

Чтобы найти файлы, соответствующие определенному шаблону, используйте аргумент -name. Вы можете использовать метасимволы имени файла (например, * ), но вы должны либо поставить escape-символ ( \ ) перед каждым из них, либо заключить их в кавычки.

Например, если мы хотим найти все файлы, начинающиеся с «pro» в каталоге «Документы», мы должны использовать команду cd Documents/, чтобы перейти в каталог «Документы», а затем ввести следующую команду. :

find . -name pro\*

В списке перечислены все файлы в текущем каталоге, начинающиеся с «pro».

ПРИМЕЧАНИЕ. Команда find по умолчанию чувствительна к регистру. Если вы хотите, чтобы при поиске слова или фразы не учитывался регистр, используйте параметр -iname с командой find. Это нечувствительная к регистру версия команды -name.

Если find не находит файлы, соответствующие вашим критериям, он ничего не выводит.

Команда find имеет множество опций для уточнения поиска. Чтобы получить дополнительную информацию о команде find, запустите man find  в окне терминала и нажмите Enter.

Использование команды «Найти»

Команда locate работает быстрее, чем команда find, потому что она использует ранее созданную базу данных, в то время как команда find выполняет поиск в реальной системе по всем фактическим каталогам и файлам. Команда locate возвращает список всех имен путей, содержащих указанную группу символов.

База данных периодически обновляется из cron, но вы также можете обновить ее самостоятельно в любое время, чтобы получать самые свежие результаты. Для этого введите в командной строке следующую команду:

sudo updatedb

Введите свой пароль при появлении запроса.

Базовая форма команды locate находит все файлы в файловой системе, начиная с корня, которые содержат все или часть критериев поиска.

locate mydata

Например, приведенная выше команда обнаружила два файла, содержащих «mydata», и один файл, содержащий «данные».

Если вы хотите найти все файлы или каталоги, которые точно и только содержат ваши критерии поиска, используйте параметр -b с командой locate, как показано ниже.

locate -b '\mydata'

Обратная косая черта в приведенной выше команде является подстановочным символом, который обеспечивает способ расширения подстановочных знаков в неспецифическом имени файла в набор определенных имен файлов. Подстановочный знак — это символ, который можно заменить одним или несколькими символами при вычислении выражения. Наиболее распространенными подстановочными знаками являются вопросительный знак ( ? ), который обозначает один символ, и звездочка ( * ), которая обозначает непрерывную строку символов. В приведенном выше примере обратная косая черта отключает неявную замену «mydata» на «*mydata*», поэтому в итоге вы получите только результаты, содержащие «mydata».

Команда mlocate — это новая реализация locate. Он индексирует всю файловую систему, но результаты поиска включают только те файлы, к которым у текущего пользователя есть доступ. Когда вы обновляете базу данных mlocate, она сохраняет информацию о временных метках в базе данных. Это позволяет mlocate узнать, изменилось ли содержимое каталога без повторного чтения содержимого, и делает обновления базы данных более быстрыми и менее требовательными к вашему жесткому диску.

Когда вы устанавливаете mlocate, двоичный файл /usr/bin/locate изменяется и указывает на mlocate. Чтобы установить mlocate, если он еще не включен в ваш дистрибутив Linux, введите в командной строке следующую команду.

sudo apt-get install mlocate

ПРИМЕЧАНИЕ. Позже в этой статье мы покажем вам команду, которая позволяет определить, где находится исполняемый файл команды, если он существует.

Команда mlocate не использует тот же файл базы данных, что и стандартная команда locate. Поэтому вы можете создать базу данных вручную, введя в командной строке следующую команду:

sudo /etc/cron.daily/mlocate

Команда mlocate не будет работать до тех пор, пока база данных не будет создана либо вручную, либо при запуске скрипта из cron.

Чтобы получить дополнительную информацию о команде locate или mlocate, введите man locate или man mlocate  в окне терминала и нажмите Enter. Для обеих команд отображается один и тот же экран справки.

Использование какой команды

Команда which возвращает абсолютный путь к исполняемому файлу, который вызывается при выполнении команды. Это полезно при поиске местоположения исполняемого файла для создания ярлыка программы на рабочем столе, на панели или в другом месте диспетчера рабочего стола. Например, если ввести команду what firefox, отобразятся результаты, показанные на изображении ниже.

По умолчанию команда which отображает только первый соответствующий исполняемый файл. Чтобы отобразить все подходящие исполняемые файлы, используйте параметр -a с командой:

which -a firefox

Вы можете искать несколько исполняемых файлов одновременно, как показано на следующем рисунке. Отображаются только пути к найденным исполняемым файлам. В приведенном ниже примере был найден только исполняемый файл «ps».

ПРИМЕЧАНИЕ. Команда which выполняет поиск только в переменной PATH текущего пользователя. Если вы ищете исполняемый файл, который доступен только пользователю root как обычному пользователю, результаты не будут отображаться.

Для получения дополнительной информации о команде which введите «man which» (без кавычек) в командной строке в окне терминала и нажмите Enter.

Использование команды Whereis

Команда whereis используется, чтобы узнать, где расположены двоичные файлы, исходные файлы и файлы справочной страницы для команды. Например, если ввести в командной строке whereis firefox, отобразятся результаты, как показано на следующем рисунке.

Если вы хотите, чтобы отображался только путь к исполняемому файлу, а не пути к исходному коду и справочным страницам, используйте параметр -b. Например, команда whereis -b firefox отобразит в качестве результата только /usr/bin/firefox. Это удобно, потому что вы, скорее всего, будете искать исполняемый файл программы чаще, чем исходный код и справочные страницы для этой программы. Вы также можете искать только исходные файлы ( -s ) или только справочные страницы ( -m ).

Чтобы получить дополнительную информацию о команде whereis, введите man whereis в окне терминала и нажмите Enter.

Понимание разницы между командой Whereis и командой Which

Команда whereis показывает вам расположение двоичного файла, исходного кода и справочной страницы для команды, тогда как команда which показывает только расположение двоичного файла для команды.

Команда whereis выполняет поиск в списке определенных каталогов для двоичных файлов, исходных файлов и файлов man, тогда как команда which выполняет поиск в каталогах, перечисленных в переменной среды PATH текущего пользователя. Для команды whereis список конкретных каталогов можно найти в разделе ФАЙЛЫ справочных страниц команды.

Когда дело доходит до результатов, отображаемых по умолчанию, команда whereis отображает все, что находит, тогда как команда which отображает только первый найденный исполняемый файл. Вы можете изменить это, используя параметр -a, описанный ранее, для команды which.

Поскольку команда whereis использует только пути, жестко закодированные в команде, вы не всегда можете найти то, что ищете. Если вы ищете программу, которая, по вашему мнению, может быть установлена в каталоге, не указанном на справочных страницах для команды whereis, вы можете использовать команду which с параметром -a, чтобы найти все вхождения. команды во всей системе.

RELATED: Best Linux Laptops for Developers and Enthusiasts