По сути, все в Linux - это файл. Но прежде чем вы сможете редактировать файл, вы должны уметь найти его в системе.
О поиске файлов в Linux
В этой статье я подробно описываю две команды с полезными примерами для поиска файлов с помощью терминала. Эти две команды - команда find и команда locate. Разница между этими двумя командами заключается в том, что find выполняет поиск в реальном времени, а locate использует для поиска индексированную базу данных. Это означает, что команда locate обычно работает быстрее, но она предполагает, что искомый файл находится в её индексной базе данных, а эта база данных обычно создаётся ночью, поэтому более новые файлы не будут найдены командой locate. Но команды должны быть одинаковыми и в других дистрибутивах Linux.
Если вы хотите искать файлы по их содержимому, а не по имени файла, посмотрите на команду grep.
Поиск файлов и каталогов с помощью команды find
Поиск файла в текущем каталоге
Если вы хотите найти файл с помощью команды find, выполните на терминале одну из следующих команд.
1 | find <имя файла> |
предположим,
1 | find test.txt |
Это приведет к поиску файла в текущем каталоге, над которым вы работаете.
Поиск файла в другом каталоге
Теперь, если вы хотите найти файл в определенном каталоге. Полная команда должна выглядеть следующим образом
1 | find <путь к директории/имя файла> |
Предположим, вы хотите найти файл с именем 'test.txt' в Documents, полная команда должна выглядеть следующим образом
1 | find Documents/test.txt |
Поиск файлов по расширению файла
Теперь, если вы хотите найти все текстовые файлы в текущем или определенном каталоге, соответствующие команды должны выглядеть следующим образом.
1 | find *.txt |
1 | find <путь к каталогу/*.txt> |
Предположим, вы хотите найти все текстовые файлы по пути Documents/user, полная команда должна выглядеть следующим образом.
1 | find Documents/user/*.txt |
Поиск файлов по имени
Также вы можете использовать переключатель -name, если хотите найти файл по имени.
1 | find <путь> -name <имя файла, который вы хотите найти> |
Предположим, вы хотите найти файл с именем test1.txt в папке Documents/user. Полная команда должна выглядеть следующим образом.
1 | find Documents/user -name test1.txt |
Если вы хотите найти определенный файл в текущем каталоге, в котором вы работаете. Поместите . в путь, как показано в примере.
1 | find . -name test1.txt |
Игнорирование регистра при поиске файлов
Если вы хотите найти файл и игнорировать регистр, используйте переключатель -iname. Полная команда должна выглядеть следующим образом.
1 | find . -iname test.txt |
Поиск файлов по типу файла, например, симлинки
Для поиска файлов определенного типа используйте опцию -type. Полная команда должна выглядеть следующим образом.
1 | find <путь> -type <c> |
- c обозначает тип файла, и они следующие.
- b блок (буферизованный) специальный
- c символьный (без буферизации) специальный
- d каталог
- p именованная труба
- f обычный файл
- l символическая ссылка
- D дверь (Solaris)
Предположим, вы хотите найти обычные файлы в Documents/User, выполните следующую команду.
1 | find Documents/User -type f |
Если вы хотите искать регулярные файлы в текущем каталоге. Полная команда должна выглядеть следующим образом.
1 | find . -type f |
Если вы хотите искать файлы с несколькими расширениями, используйте символы c, разделенные запятыми.
Допустим, вы хотите найти все обычные пустые файлы в текущем каталоге.
1 | find . -type f -empty |
Допустим, вы хотите найти все пустые каталоги в текущем каталоге, используйте опции -d и -empty в команде find следующим образом.
1 | find . -type d -empty |
Поиск файлов по размеру
Если вы хотите найти файлы с определенным размером, вы можете использовать параметр -size. Вы можете использовать следующий суффикс с их точным размером.
- c: байты
- k: килобайты
- M: мегабайты
- G: гигабайты
- b: блок 512 байт
Предположим, вы хотите найти все файлы в текущем каталоге, размер которых составляет ровно 50 байт. Вы должны выполнить следующую команду.
1 | find . -size 50c |
Предположим, вы хотите найти все файлы в текущем каталоге, размер которых больше 50 байт или меньше 50 байт, соответственно, вы должны выполнить одну из следующих команд.
1 | find -size +50c |
1 | find -size -50c |
Поиск файлов по владельцу (пользователю)
Если вы хотите найти файл, принадлежащий определенному пользователю, вы можете использовать опцию -user. Синтаксис команды должен быть следующим.
1 | find <путь> -user <имя пользователя> |
Предположим, вы хотите найти файл в текущем каталоге, принадлежащий user. Команда должна выглядеть следующим образом.
1 | find . -user user |
Поиск файлов с помощью команды Locate
Вторая команда - это команда locate, которую вы можете использовать для поиска файлов и каталогов в вашей системе.
Прежде всего, вы должны установить утилиту locate на вашей машине Debian 11. Войдите в систему с правами root и выполните следующую команду в терминале. Нажмите Y на клавиатуре, когда появится запрос на подтверждение.
1 | apt-get install locate |
Дождитесь завершения операции.
Locate - это более быстрая команда, и она полагается на базу данных файловой системы. Она обновляется раз в день, но если вы хотите обновить ее вручную, выполните следующую команду в терминале с правами root.
1 | updatedb |
Чтобы найти файл с помощью команды locate в текущем каталоге, выполните следующую команду в терминале.
1 | locate <filename> |
Предположим, имя моего файла - test.txt. Полная команда должна выглядеть следующим образом.
1 | locate test.txt |
Вы можете использовать опцию -i, чтобы игнорировать регистр имени файла.
1 | locate -i <filename> |
или
1 | locate -i test.txt |
Обе команды locate и find полезны для поиска файлов. Вы сами решаете, какую из команд использовать. Их можно дополнить другими командами, используя pipe, wc, sort, grep и т.д.