Терминал в Linux является основным приложением для выполнения задач, включая поиск файлов. В этом вам поможет использование команды find, с которой вы можете находить файлы и каталоги в файловой системе Linux.
Для начала создайте тестовую папку, содержащую тестовые файлы. После создания тестового каталога и файлов убедитесь, что файлы были созданы с помощью ls.
mkdir test
cd test
touch test1.txt test2.h test3.c TEST.f
ls
Поиск файла в Linux
Воспользуемся командой find, чтобы в каталоге test найти файл с именем test1.txt. Использование find с».»указывает, что поиск должен быть ограничен текущим рабочим каталогом. После выполнения команды find вы должны увидеть test1.txt файл, указанный в результате.
find . -name test1.txt
Поиск по частичному имени файла в Linux
Иногда может потребоваться выполнить поиск с использованием неполных имен файлов или каталогов.
В каталоге test выполните следующую команду для поиска файлов, содержащих буквы “tes” в своем имени.
find . -name “*tes*”
В списке результатов вы должны увидеть, что все файлы были найдены и перечислены, кроме TEST.f, это связано с тем, что-name возвращает результаты с учетом регистра.
Повторите команду поиска определенного расширения файла. Мы можем использовать тот же метод для поиска определенного типа файла. Смена команды на поиск»*.txt * » вернет только тип файла .txt.
find . -name “*.txt*”
Используйте-iname для возврата результатов без учета регистра. Здесь мы снова используем неполный поисковый запрос » * tes*», но использование-iname заставляет команду отображать все результаты независимо от верхнего или нижнего регистра. Поэтому результаты включают наш файл TEST.f.
find . -iname “*tes*”
Различие между каталогами и файлами в Linux
В своей стандартной форме команда find вернет любое совпадение, будь то файл или каталог. Можно добавить теги в команду find, которые заставят команду возвращать только файлы или возвращать результаты поиска в каталоге.
Добавьте каталог в наш тестовый каталог под названием test2. Используйте ls для подтверждения создания каталога.
cd test
mkdir test2
ls
Запустите команду find, которая вернет результаты как по файлу, так и по каталогу. Вы должны увидеть, что результат содержит все тестовые файлы, а также каталог test2.
find . -iname “*test*”
Добавьте тег типа f, чтобы возвращать только результаты из файла. Обратите внимание, что в результате каталог test2 пропущен.
find . -iname “*test*” -type f
Добавьте тег-type d, чтобы возвращать результаты только каталогам. Обратите внимание, что единственным результатом теперь должен быть каталог test2 .
find . -iname “*test*” -type d
Поиск по всей файловой системе Linux
Возможно, вам придется поискать всю файловую систему, чтобы попытаться найти файл.
Выполните поиск test1.txt файлов в корневом каталоге ( / ) файловой системы. Этот шаг добавлен, чтобы проиллюстрировать распространенную проблему.
cd
find / -iname test1.txt
Вы обнаружите, что у вас нет разрешения на доступ к диску во многих папках. Обратите внимание, что в этом примере мы используем / , чтобы включить команду для поиска во всех подкаталогах.
Повторите предыдущий поиск, но используйте sudo для выполнения поиска с рут-правами (root). Это один из самых высоких уровней прав доступа к файлам и папкам.
sudo find / -iname test1.txt
Теперь вы можете искать любой файл в любом месте вашей системы, даже если вы знаете только часть его названия.