Linux: простые способы поиска файлов Самый простой способ оценить важность задачи выполняемой на компьютере — посчитать сколько программ написано для ее решения. Посчитав различные варианты поиска файлов становится понятно что эта задача важна как для рядовых пользователей так и для администраторов систем под управлением Linux.

[ad#ad-2]
Вариант первый: поиск файлов по имени в заведомо известной директории.

1
2
3
test@test:~$ ls *search_file*
search_file.txt
test@test:~$

или поиск по всем поддиректориям (исходя из той директории в которой вы находитесь)

1
test@test:ls */*search_file*

или же можно объединить поиск

1
2
3
test@test:ls */*search_file* *search_file*
ls: невозможно получить доступ к */*search_file*: Нет такого файла или каталога
search_file.txt

Для некоторых дистрибутивов так же доступна программа slocate. Она создает индекс файлов файловой системы и выполняет поиск по нему.

1
test@test:slocate search_file

Вариант второй: Использование команд which и whereis
Программа whereis ищет исполняемые файлы , исходные коды и документацию (man файлы ) для указанной команды. Приэтом поиск происходит только в директориях указанных в переменных окружения. Например:

1
2
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

Выполнение этой команды покажет нам где находится исполняемый файл для команды «ls», а так же где находится документация (man файл).
Команда which ищет исполняемый файл команды и только в тех директориях которые указаны в переменной «path» среды окружения. Например

1
2
$ which vi
/usr/bin/vi

Вариант третий: использование мощного инструмента «find»
Команда «find» мощный инструмент поиска, который в состоянии определить местонахождение файлов на основе собственности, прав доступа, времени последнего доступа, размера, и многого другого. Соответственно и синтаксис команды намного сложнее

1
2
3
4
5
$ find /etc -name '*.conf' -user cupsys -print 
find: /etc/ssl/private: Permission denied 
find: /etc/cups/ssl: Permission denied 
/etc/cups/cupsd.conf 
/etc/cups/printers.conf

В этом примере мы ищем файл с расширением *.conf, которые принадлежат пользователю cupsys и находятся в директории /etc.
В общем случае синтаксис команды find такой

1
$ find <где ищем > <что ищем> <что делаем с тем что найдено>

<где ищем > — это простой список директорий, разделенный пробелами, указывающий где искать файл. Далее мы покажем как задать <что ищем>:
1. -name string : поиск файлов в названии которых есть указанная строка. Например: -name ‘*.jpg’
2. -iname string: тоже что и -name но не чувствительно к регистру. Например: -iname ‘*tax*’
3. -user username: указывает файлы какого пользователя искать. Например: -user test
4. -group groupname: указывает на принадлежность файла группе. Например: -group www-data
5. -type x: указывает на тип файла. А именно: f — ищем файл, d — ищем директорию, l — ищем символическую ссылку, b — ищем файл устройства. Например: -type d
6. -size +N: указывает что размер файла должен быть равен или больше указанного значения (используем суффикс c для указания размера в байтах , k в килобайтах, M в мегабайтах). Например: -size +100M
7. -size -N: указывает что размер файла должен быть равен или меньше указанного значения (используем суффикс c для указания размера в байтах , k в килобайтах, M в мегабайтах). Например: -size -50c
8. -mtime -N: указывает что дата последнего изменения фала должна быть меньше чем указанное количество дней. Например: -mtime -1
9. -mtime +N: указывает что дата последнего изменения фала должна быть больше чем указанное количество дней. Например: -mtime +21
10. -perm mode: указывает какими должны быть права доступа к искомому файлу. Например: -perm 644.

<что делаем с тем что найдено> указывает дальнейшие действия с найденными файлами
-print — стандартное решение (дефолтное и может не указываться) — вывод полного пути к файлу.
-ls — вывод всей информации о найденный файлах — аналогично ls -dils
-delete — удалить найденный файлы

А таперь несколько примеров

1
$ find ~ -name '*.ppt'

Ищет файлы PowerPoint в домашней директории пользователя

1
$ find /var -type d -user daemon

Ищет все директории владельцем которых является пользователь daemon в папке /var

1
$ find /etc -user cupsys -or -size 0

Ищет в папке /etc все файлы владельцем которых является пользователь cupsys или размер которых равен 0 байт


Similar Posts:

Теги:
 

2 Responses to Linux: простые способы поиска файлов

  1. admin:

    Хе-Хе :) кому надо что-нибудь найти — обращайтесь — составим вам правильную команду find

  2. Alex:

    Требуется найти все файлы добавленные или измененные 20 августа 2011 — как сделать, подскажите плз?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">