Поиск файлов в Linux

Written by

in

\"find\"

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

0. Создадим файл размером 10 Мбайт с размером блока 100 Кбайт:

rootoor@srv:~/dd-test$ dd if=/dev/zero of=file1.test bs=100K count=100
100+0 записей считано
100+0 записей написано
скопировано 10240000 байт (10 MB), 0,0448225 c, 228 MB/c

rootoor@srv:~/dd-test$ ls -l
итого 10000
-rw-r--r-- 1 rootoor rootoor 10240000 2013-05-05 13:47 file1.test

rootoor@srv:~/dd-test$

/dev/zero – специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов (ASCII NUL, 0x00)

of=file.test – файл который создаем

bs=100K – размер блока, 100 КБайт (может быть: К – КБайт, М – МБайт, G – ГБайт)

count=100 – количество блоков

В результате мы получили заданный файл, размером 100К*100=10 МБ

rootoor@srv:~# dd if=/dev/zero of=/var/www/file1.test bs=1M count=52
52+0 records in
52+0 records out
54525952 bytes (55 MB) copied, 0.453559 s, 120 MB/s

теперь в директории /var/www/ находится файл file1.test размером 52 МБ.

1. Поиск файлов в текущей директории размером больше 10 Мбайт

rootoor@srv:/var/www$ find . -size +10M -print
./var/www/file1.test

find – утилита для поиска файлов

. – где ищем. В нашем случае текущей директории (/var/www/* – поиск в директории /var/www/, ~ – поиск в домашней директории, / – поиск в корне файловой системы, $HOME – поиск в домашней директории )

-size +10M – размер искомого файла. Больше 10 Мбайт (b – блок, размером 512 байт, c – байт, w – слово, размером 2 байта, k – килобайт, M – мегабайт и G– гигабайт )

-print – вывод на экран

2. Поиск файлов больше 50 Мб с выводом детальной информации

Усложним задачу и попробуем вывести на экран кроме имени файла еще некоторую информацию о нем.

rootoor@srv:~# find /var/www/* -type f -size +50000k -exec ls -lh {} \\; | awk \'{ print $8 \" \" $5 \" \" $1 \" \" $3\":\"$4 }\'

./var/www/test1.file 110M -rw-r--r-- rootoor:rootoor
./var/www/file1.test 52M -rw-r--r-- rootoor:rootoor

-type f – тип, который ищем (f – файл, d – директория, l – символичная ссылка, s – сокет, b – блок)

-exec ls -lh {} \\; – выполняет команду ls -lh над найденными файлами (вывод содержимого директории)

awk \'{ print $8 \” \” $5 \” \” $1 \” \” $3\”:\”$4 }\’ – обрабатываем вывод информации командой ls -lh

и выводим более детальную информацию в нужном нам порядке:
$8 – имя файла
$5 – размер файла
$1 – права доступа
$3 – владелец
$4 – группа

3. Поиск файлов заданного размера и определенного имени

rootoor@srv:~# find $HOME -name w*  -size +1M -exec ls -lh {} \\; | awk \'{ print $8 \" \" $5 }\'

/home/rootoor/kawabanga.tar.gz 17M

-name w* – любой файл имя, которого содержит w*

 

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *