Машинный перевод "25 basic 'find' command to search files in Linux with Examples"
Известно, что команда find в Linux/Unix является одной из наиболее важных и часто используемых команд для поиска файлов и каталогов. Он поддерживает различные аргументы и параметры для поиска файлов и каталогов. Даже если вы можете найти файлы и каталоги в Linux через графический интерфейс, он будет более удобным и простым в использовании, но графический интерфейс может потребовать много времени для загрузки больших размеров. В результате опытные системные администраторы используют только командную строку. search из-за его надежности, скорости и мощности.
В Linux команду «найти» можно использовать для поиска файлов и каталогов по их именам, датам их создания, датам их изменения, их владельцам и их разрешениям. После того, как вы освоите эти команды, будет довольно легко извлекать данные из Терминала.
Цель этого руководства — научить вас использовать различные параметры команды find в Linux с примерами. Все приведенные ниже примеры были протестированы на RHEL/CENTOS 7.6.
Глобальный синтаксис команды find в Linux:
find [путь...] [параметры] [выражение]
1. Как искать файл с определенным именем?
# find . -name "linuxteck.txt"
Output:
./linuxteck.txt
Примечание. Здесь мы использовали аргумент «-name» для поиска файла с именем «linuxteck.txt» и «.», точка представляет текущий рабочий каталог. Чтобы проверить текущий рабочий каталог, используйте команду «pwd».
2. Как искать файл без учета регистра с определенным именем?
# find . -iname linuxteck.txt
Output:
./linuxteck.txt
./Linuxteck.txt
Примечание. Здесь мы использовали параметр «iname» для поиска файла без учета регистра с именем «linuxteck.txt». В приведенном выше примере будет указан файл с заглавными и строчными буквами с именем «linuxteck.txt» из текущего рабочего каталога.
3. Как искать файл в определенном каталоге?
# find /var/test/ -name linuxteck.txt
Output:
/var/test/linuxteck.txt
Примечание. Вы можете искать файлы непосредственно в определенной папке/каталоге. В приведенном выше примере я указал путь к каталогу «/var/test», чтобы найти файл с именем «linuxteck.txt».
4. Как выполнить поиск во всех каталогах, используя аргумент «type»?
# find /var/test/ -type d
Output :
/var/test/
/var/test/linuxteck.com
/var/test/linuxteck
Примечание. Аргумент '-type' предоставляет следующие параметры при поиске файлов:
г – каталог или папка
е – обычный файл
л – символическая ссылка
в – символьные устройства
б – блочные устройства
Используя аргумент '-type', мы можем разделить результаты поиска по файлу, каталогу, символической ссылке или блочным устройствам. В приведенном выше примере я использовал -type d', чтобы перечислить все каталоги в «/var/test», это исключит файлы, символические ссылки и т. д.
5. Как совместить опцию "-type" и "-name" для поиска файла?
# find . -type f -name linuxteck.txt
Output :
./linuxteck.txt
Примечание. Используйте параметр «-type f» для поиска только файлов. В этом примере он будет искать файл с именем «linuxteck.txt» и исключать каталоги, символические ссылки и т. д.
6. Как искать файлы определенного формата/расширения?
# find . -type f -name "*.php"
Output:
./logs/error.php
./index.php
./cli/deletefiles.php
./cli/update_cron.php
./cli/finder_indexer.php
./cli/garbagecron.php
Примечание. В этом примере будут перечислены все файлы с расширением «.php» из текущего рабочего каталога. В режиме реального времени вы можете использовать эту команду для поиска определенного расширения.
7. Как найти файл по имени и удалить его?
# find . -name linuxteck.txt -delete
Примечание. Использовать аргумент «-delete» для удаления файла очень легко и просто, но это довольно опасно, так как не будет запрашиваться подтверждение. Эта опция будет работать лучше, потому что она не порождает новый процесс, поэтому рекомендуется только для суперпользователей, а для обычных пользователей рекомендуется использовать команду удаления с опцией подтверждения, чтобы вы могли дважды проверить перед удалением файлов или папки.
8. Как удалить файл с подтверждением с помощью опции выполнить (-exec)?
# find . -name linuxteck.txt -exec rm -i {} \;
rm: remove regular empty file './linuxteck.txt'? y
Примечание. В этом примере приведенная выше команда запросит подтверждение, хотите ли вы удалить linuxteck.txt или нет. если вы нажмете «y», он удалит файл. Основное преимущество использования '-exec' может дать вам больше контроля над фактической командой, т. е. вы можете передавать некоторые аргументы, такие как rm, mv и т. д. Эту команду рекомендуется удалить.
9. Как найти все файлы, к которым обращались, старше 10 дней?
# find / -atime 10
Примечание. Используя время доступа «-atime», мы можем найти самые последние файлы доступа, которые будут прочитаны или записаны. Приведенная выше команда выведет список всех файлов, к которым обращались 10 дней назад с текущего времени.
10. Как найти все измененные файлы старше 10 дней назад?
# find / -mtime 10
Примечание. Используя время модификации '-mtime', мы можем найти самые последние измененные файлы. Приведенная выше команда выведет список всех файлов, которые были изменены 10 дней назад с текущего времени. Мы можем использовать знаки плюс (+) и минус (-) соответственно до или после количества дней.
11. Как найти все измененные файлы менее чем за сутки?
# find / -ctime -1
Примечание: используя время изменения '-ctime' - вы можете найти недавно обновленную временную метку файлов. Приведенная выше команда выведет список всех файлов, индексный дескриптор которых был обновлен менее чем за день.
12. Как найти все измененные файлы за последний час?
# find / -mmin -60
Примечание. Использование минимального аргумента '-mmin'. В приведенном выше примере будут выполняться поиски всех файлов, которые были изменены за последний час.
13. Как найти все файлы размером 10 МБ в вашей системе?
# find / -size 10M
Примечание. В приведенном выше примере будут найдены все файлы в вашей системе, размер которых соответствует 10 МБ.
14. Как найти все файлы размером от 10 до 20 МБ?
# find / -size +10M -size -20M
Примечание. В приведенном выше примере будут выполняться поиски всех файлов в вашей системе размером от 10 до 20 МБ. Это означает, что в нем будут перечислены все файлы размером более 10 МБ и менее 20 МБ.
15. Как найти и удалить все файлы размером более 1 ГБ за один раз?
# find / -size +1G -exec rm -rfv {} \;
Примечание. Приведенная выше команда выполнит поиск всех файлов в вашей системе размером более 1 ГБ и удалит их напрямую без какого-либо подтверждения. Точно так же вы можете использовать знаки плюс (+) и минус (-) для дальнейшей фильтрации поиска.
Чтобы узнать размер файла в Linux, помимо приведенной выше команды, мы также можем использовать команду du, что означает использование диска. Нажмите здесь для получения дополнительной информации о команде «du»
16. Как найти и удалить файл с определенным расширением/форматом?
find . -type f -name "*.sql" -size +100M -exec rm -i {} \;
Примечание. В приведенном выше примере будут выполняться поиск всех файлов с расширением «.sql», размер которых превышает 100 МБ, и их удаление с подтверждением.
17. Как искать файлы по принадлежности?
# find / -user linuxteck
Output:
/home/linuxteck/linux
/home/linuxteck/apache
/home/linuxteck/php
/home/linuxteck/mysql
/home/linuxteck/phpmyadmin
Примечание. Эта команда выведет список всех файлов, принадлежащих конкретному пользователю. В приведенном выше примере будут перечислены все файлы, принадлежащие пользователю «linuxteck», несколько примеров прилагаются. Вы можете протестировать его в соответствии с вашими требованиями.
18. Как искать файлы по именам групп?
# find / -group education
Примечание. В приведенном выше примере перечислены файлы, принадлежащие группе с именем Education.
19. Как искать файлы по привилегиям доступа?
# find / -perm 644
Примечание. Используя параметр «-perm», вы можете искать файлы на основе прав доступа к файлам. В приведенном выше примере будут перечислены все файлы, которые имеют только разрешение 644, что означает, что в Linux это (644) соответствует привилегии чтения и записи. Точно так же вы можете играть с различными разрешениями для файлов в зависимости от ваших требований.
20. Как найти файлы с неправильными разрешениями доступа?
# find / -type f ! -perm 0777
Примечание. Эта команда поможет вам определить файлы с неправильными разрешениями доступа, которые могут привести к нарушению безопасности.
21. Как искать только пустые файлы?
# find / -type f -empty
Примечание. Приведенная выше команда будет искать только пустые файлы на вашем компьютере.
22. Как искать только пустые папки?
# find / -type d -empty
Примечание. Приведенная выше команда будет искать только пустые папки на вашем компьютере. Точно так же вы можете искать пустые файлы и папки по определенному пути в соответствии с вашими требованиями.
23. Как искать пустые файлы и папки?
# find / -empty
Примечание. Приведенная выше команда будет искать и отображать все пустые файлы и папки на вашем компьютере.
24. Как найти все скрытые файлы в вашей системе?
# find / -type f -name ".*"
Примечание. Приведенная выше команда выведет список всех скрытых файлов в вашей системе. В Linux все скрытые файлы помечаются точкой в начале каждого файла.
25. Как искать «текст» в нескольких файлах?
# find / -type f -name "*.txt" -exec grep 'LinuxTeck' {} \;
Output:
LinuxTeck.com
LinuxTeck.com
Примечание. В приведенном выше примере будут перечислены строки, содержащие «linuxteck».
Я надеюсь, что эта статья поможет вам изучить команды «найти» на примерах.
#linux #find #командылинукс #линукс #найти