Введение
В этом руководстве вы узнаете, как выполнить поиск файлов с помощью командной строки Linux.
Вы, вероятно, не будете удивлены, узнав, что команда, используемая для поиска файлов называется find.
С помощью этого руководства вы узнаете обо всех параметрах, доступных при использовании команды поиска.
Базовый синтаксис команды find
Вот основной синтаксис команды find.
find / -name game
Первая часть команды поиска, очевидно, слово find.
Вторая часть, это путь поиск
Следующая часть это выражение, которое определяет, что найти.
И, наконец, последняя часть это текст, который надо найти.
Где начать поиск
Вы можете выбрать любое место в файловой системе, чтобы начать поиск. Например, если вы хотите искать от текущей файловой системе, которую вы можете использовать следующим образом:
find . -name game
Приведенная выше команда будет искать файл или папку под названием game во всех папках под текущей папки. Вы можете найти имя текущей папки , используя команду PWD.
Если вы хотите найти во всей файловой системе, то вам нужно, начать в корневой папке следующим образом:
find / -name game
Вполне вероятно, что результаты, возвращенной команды покажет разрешение отказано для многих из возвращенных результатов.
Вам, вероятно, нужно ваши права доступа с помощью команды Sudo или переключиться на учетную запись администратора с помощью команды su.
Исходное положение может быть буквально в любом месте вашей файловой системы. Например, для поиска из домашней папки введите следующую команду:
find ~ -name game
Тильда является метасимволом обычно используется для обозначения домашней папки текущего пользователя.
Выражения
Наиболее распространенным выражение, которое вы будете использовать это -name.
name — выражение позволяет осуществлять поиск по имени файла или папки.
Существуют, однако, другие выражения, которые можно использовать следующим образом:
- -amin n — файл в последний раз открыт n минут назад
- -anewer — файл был последний раз открыт позже, чем он был изменен
- -atime n — файл в последний раз открыт больше n дней назад
- -cmin n — последнее изменение файла n минут назад
- -cnewer — файл в последний раз был недавно изменен, чем файл был изменен
- -ctime n — файл был изменен в последний раз более чем n дней назад
- -empty — файл пуст
- -executable — файл является исполняемым
- -false — всегда ложная
- -fstype type — файл находится в указанной файловой системе
- -gid n — файл принадлежит к группе с идентификационным номером
- -group groupname — файл принадлежит к группе под названием
- -ilname pattern — поиск по символической линии, но игнорировать регистр
- -iname pattern — поиск файла, но игнорировать регистр
- -inum n — поиск файла с указанным узлом
- -ipath path — искать пути, но игнорировать регистр
- -iregex выражение — поиск выражения, но игнорировать регистр
- -links n — поиск файла с указанным количеством ссылок
- -lname name — поиск символической ссылки
- -mmin n — данные файла Последнее изменение n минут назад
- -mtime n — данные файла Последнее изменение n дней назад
- -name name — поиск файла с указанным именем
- -newer название — поиск файла отредактированной позже, чем заданный файл
- -nogroup — поиск файла, без идентификатора группы
- -nouser — поиск файла с пользователем не прилагается к нему
- -path path — искать пути
- -readable — найти файлы, которые являются читаемыми
- -regex pattern — поиск файлов, удовлетворяющих регулярному выражению
- -type type — поиск определенного типа
- -uid uid — у файла числовой идентификатор пользователя такой же, как UID
- -user name — файл принадлежит указанный пользователем
- -writable — поиск файлов, которые могут быть записаны
Как найти файлы доступны более чем на n-ое количество дней назад
Например представьте, что вы хотите, найти все файлы в вашей домашней папке, доступ к которым был более чем 100 дней назад. Вы можете захотеть сделать это, если вы хотите сделать резервную копию и удалить старые файлы, к которым вы не обращаетесь.
find ~ -atime 100
Как найти пустые файлы и папки
Если вы хотите найти все пустые файлы и папки в вашей системе используйте следующую команду:
find / -empty
Как найти все исполняемые файлы
Если вы хотите, чтобы найти все исполняемые файлы на вашем компьютере, делайте это с помощью следующей команды:
find / -executable
Как найти все файлы только для чтения
Чтобы найти все файлы, которые можно только считывать, с помощью следующей команды:
find / -readable
Шаблон
При поиске файла, вы можете использовать шаблон. Например, может быть, вы ищете все файлы с расширением mp3.
Вы можете использовать следующую схему:
find / -name *.mp3
Как отправить выход команде find
Основная проблема с командой поиска в том, что он может иногда возвращать слишком много результатов, чтобы смотреть их на одном дыхании.
Вы можете перенаправить вывод в команде tail или вы можете выводить строки в файл следующим образом :
find / -name *.mp3 -fprint nameoffiletoprintto
Как найти и выполнить команду с файлом
Представьте, что вы хотите, искать и редактировать файл одновременно.
Вы можете использовать следующую команду:
find / -name filename -exec nano '{}' \;
Вышеприведенная команда ищет файл с именем файла, а затем запускает редактор nano для файла, который он находит.
Резюме
Команда find является очень мощной. Это руководство показывает базовый синтаксис и некоторые из наиболее распространенных применений.
Для всего остального вы должны прочитать страницу руководства для команды поиска .
Вы можете сделать это, выполнив следующую команду в терминале:
man find