Показать статистику
0 голосов
от (1.7тыс. баллов)
263 просмотров 2 ответов

2 Ответы

+1 голос
от (160 баллов)

Поиск файла в Linux осуществляется с помощью команды find

Синтаксис следующий:

find [каталог] [доп параметры] критерий шаблон
  • каталог — где будет начат поиск
  • доп параметры — дополнительная опция (насколько глубоко искать и другие)
  • критерий — критерий поиска (дата, владелец, права доступа и т.д.)
  • шаблон — значение отбора файлов

Если нужно найти все файлы в текущей директории, то забиваем: 

find

Если необходимо найти файлы в указанной директории, то забиваем: 

 find ./имя папки

Также можно искать по имени в текущей папке: 

find . -name "*.jpeg"

Чтобы найти по имени в текущей директории, прописываем: 

find . -name "testname*"

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

find . -maxdepth 1  -name "*.js*"

Тип файла тоже важен и бывают ситуации, когда необходимо найти конкретный каталог или файл. За это отвечают параметры d (директория) и f (файл).

Примеры: 

find . -type d -name "Документы"
$ find . -type f -name "Документы"
0 голосов
от (800 баллов)
редактировать от

find - универсальная команда поиска файлов в linux

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

При настройке критериев поиска команды find обязательно нужно указывать тип файла. Если тип файла не будет указан, в результате поиска find может найти все одноимённые файлы, ссылки и папки. И нельзя будет понять, где здесь файл, где ссылка, а где каталог. 

Поиск по типу файла

В линукс различают следующие типы файлов:

  • f - обычные файлы (текст, видео, фото, конфигурационные файлы и т. д.) ;
  • d - директории (каталоги или папки), в которых хранятся файлы;
  • l - символические ссылки  (на каталоги и файлы) ;
  • b - физические блочные устройства (dev). Например, жёсткий диск, ssd или карта памяти;
  • с - символьные устройства. Эти устройства работают с потоками данных. С них можно только считать символы или записать их на них. Примером символьного устройства является /dev/null или принтер, напрямую подключенный к компьютеру. Взаимодействие системы с символьным устройством имее следующую особенность: после передачи на них данных, драйвер не позволяет проверить или изменить записанную информацию;
  • p - именованные каналы. Они схожи с символьными устройствами. Отличаются от них тем, что на другом конце потока ввода/вывода находится не драйвер устройства, а другой процесс. 
  • s - сокеты. Это специализированные интерфейсы, которые используются для обеспечения взаимодействия между процессами в Linux. 

-type

Для того, чтобы указать команде find тип искомого файла, используется параметр -type. 

Команда 

find /home/rza -type f name '1.*'

найдёт все обычные файлы 1.txt, 1.png, 1.jpg. и т. д.,  которые лежат в директории rza и её папках. 

Команда 

find / -maxdepth 1 -type d    

отобразит все основные каталоги, примонтированные к корневому каталогу / файловой системы. Параметр

-maxdepth 1
указывает максимальную глубину поиска.

find / -maxdepth 1 -type d

Командой

find /dev -type d

можно посмотреть список всех блочных устройств в каталоге /dev.

Команда

find / -type c

выведет перечень символьных файлов в системе.

Команда

find / -type s

найдет все соккеты.

По команде

find . -type p

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

Поиск файлов по времени создания, изменения, последнего доступа

Каждый файл в linux имеет временные метки:

  • atime - показывает время последнего доступа к файлу. Время последнего доступа означает, когда какая-либо программа обращалась к файлу для его чтения или отображения;
  • mtime - отображает время последнего изменения файла;
  • ctime - показывает, когда последний раз менялось имя файла и его месторасположение, владелец и права доступа.

Посмотреть время создания, изменения, модификация параметров и его месторасположение можно командой stat

stat hello.py

команда stat

Команда find имеет параметры:

  • -atime - время последнего доступа в vtcz;
  •  -mtime - время изменения, в сутках;
  • -ctime - время последней модификации параметров файла, в сутках.
  • amin - время последнего доступа, в минутах;
  •  -mmin - время последнего изменения файла, в минутах;
  •  -cmin - время последней модификации параметров файла  в минутах.

Найти все файлы, к которому не обращались в течение полгода

find / -type f -atime +180

Найти все файлы, к которым обращались в последние 10 мин:

find / -type f -amin -10

Поиск файлов, измененных более года назад:

find / -type f -mtime +360

Найти все файлы в системе, измененные в течение суток:

find / -type f -mmin -24

Поиск файлов формата jpg, модифицированных за последние сутки в текущей папке:

find . -type f cmin -24 -name "*.jpg"

Найти файлы, размером более терабайт, модифицированные более года назад

find /home/user/video -ctime +365 -size 1G
...