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

Автор:human

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

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

В Linux для поиска файлов достаточно удобно использовать командную строку. Я использую для поиска файлов команду find. Для полного счастье в сети есть очень удачный мануал о том, как пользоваться командой find. Нашел я его на просторах одного из моих любимыз сайтов — opennet.ru

Используйте утилиту find для поиска файлов в дереве каталогов по имени файла. Укажите имя дерева каталогов для поиска, а затем, с помощью опции -name' - имя нужного Вам файла.

Чтобы увидеть список всех файлов системы, которые называются top’, наберите:

$ find / -name top [Enter]

Эта команда проведет поиск во всех каталогах, куда Вам разрешен доступ; если Вы не имеете прав прочесть содержимое каталога, find сообщить, что поиск в данном каталоге Вам запрещен.

Опция -name' различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией -iname’.

Чтобы увидеть список всех файлов системы, которые называются top', без учета регистра символов, наберите:

$ find / -iname top [Enter]

Эта команда найдет все файлы, название которых состоит из букв top’ — включая Top', top’, и TOP'.

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

Чтобы получить список файлов системы, имена которых начинаются с букв top’, введите:

$ find / -name 'top*' [Enter]

Чтобы получить список файлов системы, имена которых начинаются с букв top', за которыми следуют еще три символа, введите:

$ find / -name 'top???' [Enter]

Чтобы получить список файлов системы, имена которых начинаются с букв top’, за которыми следуют пять и более символов, введите:

$ find / -name 'top?????*' [Enter]

Чтобы увидеть все файлы с расширением .tex'в Вашем рабочем каталоге, независимо от их написания, введите:

$ find ~ -iname '*.tex' [Enter]

Чтобы увидеть все файлы в каталоге /usr/share’, содержащие в имени слово farm', введите:

$ find /usr/share -name '*farm*' [Enter]

Используйте -regex’ вместо -name' для поиска файлов, имена которых удовлетворяют регулярному выражению, или образцу, описывающему несколько строк.

Чтобы увидеть все файлы в текущем каталоге, имена которых содержат строку net’ или comm', наберите:

Примечание: Опция -regex’ совпадает с полным именем файла относительно указанного каталога, а не с отдельным именем файла.

Чтобы найти файлы определенного размера, используйте опцию -size', указав после нее требуемый размер файла. Размер файла может быть задан в трех различных формах: если перед ним указан знак плюс (+’), ищутся все файлы, большие, чем указанный размер; если указан знак минус (-'), ищутся все файлы, меньшие, чем указанный размер; если префикс не указан, ищутся файлы точно указанного размера. (Единица измерения - блок 512 байт; символ k’ после размера указывает килобайты, символ b' - байты.)

Чтобы вывести список файлов в каталоге /usr/local’, размер которых больше 10,000 килобайт, введите:

$ find /usr/local -size +10000k [Enter]

Чтобы вывести список файлов в домашнем каталоге, размер которых меньше 300 байт, введите:

$ find ~ -size -300b [Enter]

Чтобы вывести список файлов системы, размер которых составляет 42 блока по 512 байт, наберите:

$ find / -size 42 [Enter]

Используйте опцию -empty' для поиска пустых файлов - т.е. файлов с размером 0 байт. Это полезно для поиска и удаления ненужных файлов.

Чтобы найти все пустые файлы в Вашем домашнем каталоге, введите:

$ find ~ -empty [Enter]

Чтобы найти файлы, модифицированные в определенное время, используйте команду find с опциями -mtime’ или -mmin'; аргумент опции -mtime’ определяет количество прошедших суток (24 часа), а аргумент -mmin' - количество прошедших минут.

Чтобы вывести все файлы в каталоге /usr/local’, модифицированные точно 24 часа назад, введите:

$ find /usr/local -mtime 1 [Enter]

Чтобы вывести все файлы в каталоге /usr', модифицированные 5 минут назад, введите:

$ find /usr -mmin 5 [Enter]

Если Вы хотите указать промежуток времени, поставьте перед числом либо знак плюс (+’), определяя большее или равное аргументу время, или знак минус (-'), определяя время, меньшее или равное аргументу.

Чтобы вывести все файлы в каталоге /usr/local’, модифицированные в течение последних 24 часов, введите:

$ find /usr/local -mtime -1 [Enter]

Опция -daystart' определяет отсчет времени с момента начала текущих суток.

Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные вчера, введите:

$ find ~ -mtime 1 -daystart [Enter]

Чтобы вывести все файлы в каталоге /usr’, модифицированные в течение года, введите:

$ find /usr -mtime +356 -daystart [Enter]

Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные в период от 2 до 4 дней тому назад, наберите:

$ find ~ -mtime 2 -mtime -4 -daystart [Enter]

Чтобы найти файлы, которые новее некоторого файла, введите его имя в качестве аргумента опции -newer'.

Чтобы вывести все файлы в каталоге /etc’, которые новее файла /etc/motd', введите:

$ find /etc -newer /etc/motd [Enter]

Чтобы найти все файлы новее определенной даты, используйте следующий трюк: создайте временный файл в каталоге /tmp’ и установите дату его модификации на требуемую с помощью touch, а затем поределите его как аргумент для -newer'.

Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные после 4 мая текущего года, введите:

Чтобы найти файлы, принадлежащие определенному пользователю, укажите имя пользователя в качестве агрумента опции -user’. Например, для поиска всех файлов в каталоге /usr/local/fonts', принадлежащих пользователю warwick, наберите:

$ find /usr/local/fonts -user warwick [Enter]

Опция -group’ подобным образом определяет файлы, принадлежащие некоторой группе пользователей.

Чтобы вывести список файлов в каталоге /dev', принадлежащих группе audio, введите:

$ find /dev -group audio [Enter]

Вы можете использовать команду find для выполнения других команд над найденными файлами, указав требуемые команды в качестве аргуентов опции -exec’. Если Вы используететв команде строку ''', эта строка в команде будет заменена именем текущего найденного файла. Окончание команды помечается строкой ‘;».

Чтобы найти все файлы в каталоге  /html/' с расширением .html’, и вывести строки из этих файлов, содержащие слово organic', введите:

$ find ~/html/ -name '*.html' -exec grep organic '{}' ';' [Enter]

Чтобы ввести подтверждение выполнения команды для файла, найденного find, используйте ключ -ok’ вместо -exec'.

Чтобы удалить из Вашего домашнего каталога файлы, доступ к которым осуществлялся более года назад, с подтверждением для каждого файла, введите:

$ find ~ -used +365 -ok rm '{}' ';' [Enter]

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

Чтобы вывести список файлов в Вашем домашнем каталоге, имена которых начинаются со строки top’, и которые новее файла /etc/motd', введите:

$ find ~ -name 'top*' -newer /etc/motd [Enter]

Чтобы сжать все файлы в Вашем домашнем каталоге, размер которых превышает 2 Mb, и которые еще не сжаты с помощью gzip (не имеют расширения .gz’), введите:

$ find ~ -size +2000000c -regex '.*[^gz]' -exec gzip '{}' ';' [Enter]

Чтобы найти наибольший файл в каталоге, используйте команду ls с опцией -S', которая сортирует файлы в нисходящем порядке по размеру (обычно ls выводит список файлов по алфавиту). Добавьте опцию -l’, чтобы вывести размер и другие атрибуты файла.Пример:

$ ls -lS [Enter]

Чтобы вывести оглавление каталога, начав с файлов наименьшего размера, используйте ls с ключами -S' и -r’, которые сортируют вывод в обратном порядке.Пример:

$ ls -lSr [Enter]

Чтобы вывести список каталогов, отсортированных по размеру — то есть размеру всех содержащихся в них файлов — используйте du и sort. Команда du выводит список каталогов в восходящем порядке, начиная с самого маленького; опция -S' помещает при выводе в первую колонку размер каталога в килобайтах. Укажите требуемое дерево каталогов в качестве аргумента du и перенаправьте вывод в команду sort с ключом -n’, которая отсортирует список по числам.

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

$ du -S . sort -n [Enter]|

Если Вам нужно, чтобы первыми были указаны самые большие каталоги, используйте ключ `-r’:

$ du -S . sort -nr [Enter]|

Чтобы быстро определить

Об авторе

human administrator

    Оставить ответ

    Войти с помощью: