- Поиск всех файлов для пользователя linux
- Как найти файлы в Linux с помощью командной строки
- How to Find Files in Linux Using the Command Line
- Вы можете использовать find команду для поиска файлов и каталогов на основе их прав доступа, типа, даты, владельца, размера и т. Д. Его также можно использовать в сочетании с другими инструментами, такими как grep или sed.
- Синтаксис команды find Linux
- Найти файлы по имени
- Найти файлы по расширению
- Поиск файлов по типу
- Найти файлы по размеру
- Поиск файлов по дате изменения
- Найти файлы по разрешениям
- Найти файлы по владельцу
- Найти и удалить файлы
- Вывод
Поиск всех файлов для пользователя linux
Используйте утилиту 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’в Вашем рабочем каталоге, независимо от их написания, введите:
-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 байт, введите:
-size -300b [Enter]
Чтобы вывести список файлов системы, размер которых составляет 42 блока по 512 байт, наберите:
$ find / -size 42 [Enter]
Используйте опцию `-empty’ для поиска пустых файлов — т.е. файлов с размером 0 байт. Это полезно для поиска и удаления ненужных файлов.
Чтобы найти все пустые файлы в Вашем домашнем каталоге, введите:
Чтобы найти файлы, модифицированные в определенное время, используйте команду 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’ определяет отсчет времени с момента начала текущих суток.
Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные вчера, введите:
-mtime 1 -daystart [Enter]
Чтобы вывести все файлы в каталоге `/usr’, модифицированные в течение года, введите:
$ find /usr -mtime +356 -daystart [Enter]
Чтобы вывести все файлы в Вашем домашнем каталоге, модифицированные в период от 2 до 4 дней тому назад, наберите:
-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’, введите:
/html/ -name ‘*.html’ -exec grep organic ‘<>‘ ‘;’ [Enter]
Чтобы ввести подтверждение выполнения команды для файла, найденного find, используйте ключ `-ok’ вместо `-exec’.
Чтобы удалить из Вашего домашнего каталога файлы, доступ к которым осуществлялся более года назад, с подтверждением для каждого файла, введите:
-used +365 -ok rm ‘<>‘ ‘;’ [Enter]
Вы можете определить несколько опций find одновременно, чтобы найти файлы, удовлетворяющие сразу нескольким критериям.
Чтобы вывести список файлов в Вашем домашнем каталоге, имена которых начинаются со строки `top’, и которые новее файла `/etc/motd’, введите:
-name ‘top*’ -newer /etc/motd [Enter]
Чтобы сжать все файлы в Вашем домашнем каталоге, размер которых превышает 2 Mb, и которые еще не сжаты с помощью gzip (не имеют расширения `.gz’), введите:
-size +2000000c -regex ‘.*[^gz]’ -exec gzip ‘<>‘ ‘;’ [Enter]
Чтобы найти наибольший файл в каталоге, используйте команду ls с опцией `-S’, которая сортирует файлы в нисходящем порядке по размеру (обычно ls выводит список файлов по алфавиту). Добавьте опцию `-l’, чтобы вывести размер и другие атрибуты файла.Пример:
Чтобы вывести оглавление каталога, начав с файлов наименьшего размера, используйте ls с ключами `-S’ и `-r’, которые сортируют вывод в обратном порядке.Пример:
Чтобы вывести список каталогов, отсортированных по размеру — то есть размеру всех содержащихся в них файлов — используйте du и sort. Команда du выводит список каталогов в восходящем порядке, начиная с самого маленького; опция `-S’ помещает при выводе в первую колонку размер каталога в килобайтах. Укажите требуемое дерево каталогов в качестве аргумента du и перенаправьте вывод в команду sort с ключом `-n’, которая отсортирует список по числам.
Чтобы вывести список подкаталогов в текущем дереве каталогов, отсортированный по размеру, введите:
$ du -S . sort -n [Enter]|
Если Вам нужно, чтобы первыми были указаны самые большие каталоги, используйте ключ `-r’:
$ du -S . sort -nr [Enter]|
Чтобы быстро определить количество файлов в каталоге, используйте ls и перенаправьте вывод в команду `wc -l’, которая выволит количество строк, пришедших на ее вход.
Для вывода общего количества файлов в текущем каталоге введите:
Общее количество файлов — 19.
Поскольку ls по умолчанию не показывает скрытые файлы, приведенная выше команда не будет их учитывать. Опция `-A’ для ls позволит посчитать обычные и скрытые файлы:
Чтобы посчитать количество файлов во всем дереве каталогов, а не только в отдельном каталоге, используйте find вместо ls, и укажите специальный ключ для find — строку `
! -type d’, чтобы исключить вывод и подсчет каталогов.
Чтобы вывести количество файлов в дереве `/usr/share’, введите:
$ find /usr/share \! -type d wc -l [Enter]|
Чтобы вывести количество файлов и каталогов в дереве `/usr/share’, введите:
$ find /usr/share wc -l [Enter]|
Чтобы вывести количество каталогов в дереве `/usr/share’, введите:
$ find /usr/share \! -type f wc -l [Enter]|
Команда which позволяет Вам получить полный путь к приложению или другой команде, указав базовое имя файла в качестве опции. Это удобно, чтобы убедиться, что данное приложение или команда присутствуют в системе.
Чтобы определить, установлен ли в Вашей системе perl и где он расположен, введите:
Next: Средства управления файлами Up: Средства поиска файлов Previous: Поиск файлов с помощью Contents Index Alex Otwagin 2002-12-16
Источник
Как найти файлы в Linux с помощью командной строки
How to Find Files in Linux Using the Command Line
Вы можете использовать find команду для поиска файлов и каталогов на основе их прав доступа, типа, даты, владельца, размера и т. Д. Его также можно использовать в сочетании с другими инструментами, такими как grep или sed.
Команда find является одним из самых мощных инструментов в арсенале системных администраторов Linux. Он ищет файлы и каталоги в иерархии каталогов на основе заданного пользователем выражения и может выполнять заданные пользователем действия для каждого соответствующего файла.
Синтаксис команды find Linux
Общий синтаксис find команды выглядит следующим образом:
- В options контроле атрибутов Обработка символических ссылок, параметры отладки и метод оптимизации.
- path. Атрибут определяет начальный каталог или каталоги , где найти будет искать файлы.
- expression Атрибут состоит из опций, шаблонов поиска, а также действия , разделенные операторами.
Для поиска файлов в каталоге пользователь, вызывающий find команду, должен иметь разрешения на чтение для этого каталога.
Давайте посмотрим на следующий пример:
- Опция -L (options) указывает find команде следовать символическим ссылкам.
- /var/www (путь . ) определяет каталог , который будет производиться поиск.
- Выражение) -name «*.js сообщает find поисковым файлам, заканчивающимся .js (JavaScript-файлы).
Найти файлы по имени
Поиск файлов по имени, вероятно, является наиболее распространенным использованием find команды. Чтобы найти файл по имени, используйте -name опцию после имени файла, который вы ищете.
Например, для поиска файла с именем document.pdf в /home/baks каталоге вы должны использовать следующую команду:
Чтобы запустить поиск без учета регистра, измените -name параметр с помощью -iname :
Команда выше будет соответствовать «Document.pdf», «DOCUMENT.pdf» ..etc.
Найти файлы по расширению
Поиск файлов по расширению аналогичен поиску файлов по имени. Например, чтобы найти все файлы, заканчивающиеся .log.gz внутри /var/log/nginx каталога, вы можете использовать:
Важно отметить, что когда вы используете подстановочный знак, вы должны либо заключить шаблон в кавычки, либо экранировать * символ звездочки с помощью обратной косой черты, \ чтобы она не интерпретировалась оболочкой.
Чтобы найти все файлы, которые не соответствуют регулярному выражению, *.log.gz вы можете использовать -not опцию. Например, чтобы найти все файлы, которые не заканчиваются на *.log.gz вас, используйте:
Поиск файлов по типу
Иногда вам может потребоваться поиск файлов определенного типа, таких как обычные файлы, каталоги или символические ссылки. В Linux все это файл.
Для поиска файлов по их типу используйте -type опцию и один из следующих дескрипторов, чтобы указать тип файла:
- f : обычный файл
- d : каталог
- l : символическая ссылка
- c : символьные устройства
- b : блочные устройства
- p : FIFO
- s : разъем
Например, чтобы найти все каталоги в текущем рабочем каталоге , вы должны использовать:
Распространенным примером может быть рекурсивное изменение разрешений на доступ к файлам на веб-сайте 644 и на 755 использование каталогов с помощью chmod команды
Найти файлы по размеру
Чтобы найти файлы по размеру файла, передайте -size параметр вместе с критериями размера. Вы можете использовать следующие суффиксы, чтобы указать размер файла:
- b : 512-байтовые блоки (по умолчанию)
- c : байты
- w : двухбайтовые слова
- k : Килобайты
- M : Мегабайт
- G : Гигабайты
Следующая команда найдет все файлы с точно 1024 байтами внутри /tmp каталога:
Команда find также позволяет вам искать файлы, которые больше или меньше указанного размера.
В следующем примере мы ищем все файлы меньше, чем 1MB внутри текущего рабочего каталога. Обратите внимание на — символ минус перед значением размера:
Если вы хотите искать файлы с размером больше чем 1MB , вам нужно использовать + символ плюс :
Вы даже можете искать файлы в диапазоне размеров. Следующая команда найдет все файлы между 1 и 2MB :
Поиск файлов по дате изменения
find также может искать файлы на основе их последнего изменения, доступа или изменения времени.
То же, что и при поиске по размеру, используйте символы «плюс» и «минус» для «больше чем» или «меньше чем».
Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в /etc/dovecot/conf.d каталоге, который заканчивается .conf и был изменен за последние пять дней с помощью:
Вот еще один пример фильтрации файлов по дате изменения с использованием этой -daystart опции. Команда ниже выведет список всех файлов в /home каталоге, которые были изменены 30 или несколько дней назад:
Найти файлы по разрешениям
-perm Опция позволяет искать файлы на основе прав доступа к файлам.
Например, чтобы найти все файлы с разрешениями именно 775 внутри /var/www/html каталога, вы должны использовать:
Вы можете использовать префикс числового режима с минусом — или косой чертой / .
Если / в качестве префикса используется косая черта , то по крайней мере одна категория (пользователь, группа или другие) должна иметь как минимум соответствующие биты, установленные для сопоставления файла.
Рассмотрим следующий пример команды:
Приведенная выше команда сопоставит все файлы с правами на чтение, установленными для пользователя, группы или других пользователей.
Если — в качестве префикса используется минус, то для совпадения файла должны быть установлены хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:
Найти файлы по владельцу
Чтобы найти файлы, принадлежащие конкретному пользователю или группе, используйте параметры -user и -group .
Например, для поиска всех файлов и каталогов, принадлежащих пользователю baks , вы должны выполнить:
Вот пример из реальной жизни. Допустим, вы хотите найти все файлы , принадлежащие пользователю www-data и изменить владельца совпавших файлов из www-data к nginx :
Найти и удалить файлы
Чтобы удалить все соответствующие файлы, добавьте -delete опцию в конец выражения соответствия.
Убедитесь, что вы используете эту опцию, только если вы уверены, что результат соответствует файлам, которые вы хотите удалить. Рекомендуется распечатать соответствующие файлы перед использованием -delete параметра.
Например, чтобы удалить все файлы, заканчивающиеся на .temp из, /var/log/ вы должны использовать:
Когда дело доходит до каталогов, find можно удалить только пустые каталоги так же, как rmdir .
Вывод
Мы показали вам, как использовать find команду с различными параметрами и критериями.
Эта статья должна дать вам фундаментальное понимание того, как найти файлы в ваших системах Linux. Вы также можете посетить find страницу руководства и прочитать обо всех других мощных опциях find команды.
Источник