Содержание
- Способ 1: «Пуск» / строка поиска
- Способ 2: «Проводник»
- Способ 3: Сторонний софт
- Способ 4: Отображение / поиск скрытых папок
- Вопросы и ответы
Способ 1: «Пуск» / строка поиска
В Windows 10 через меню «Пуск» или строку системного поиска, расположенную на нижней рабочей панели, можно быстро отыскать папку, файл или любое приложение, зная название.
Если на нижней панели есть строка поиска или значок в виде лупы, кликните по этому элементу, или, если удобнее, разверните меню «Пуск». В поле впишите название папки, а выше отобразится общий результат. Щелкните по строке «Другие», расположенной вверху, и из меню выберите «Папки», чтобы сузить результат поиска.
Способ 2: «Проводник»
Еще один способ найти папку на компьютере с Windows 10 – это воспользоваться поиском «Проводника», но здесь есть несколько нюансов. Во-первых, процесс может занять много времени, особенно если локальный диск заполнен различными файлами. Во-вторых, поиск работает только в пределах одного логического/физического тома, то есть, например, только в пределах «Локального диска (C:)». Но при этом предусмотрены дополнительные параметры, которые упрощают процедуру. Также такая возможность позволяет отыскать папку, даже если вы не точно помните ее название.
- Откройте «Проводник» Windows 10. Выберите тот локальный диск, на котором должна находиться искомая папка.
- Рядом с адресной строкой располагается поле, куда нужно вписать название файла или каталога. При клике по нему появится список недавних запросов, если таковые были. После того как ввели запрос, нажмите на значок в виде стрелки или клавишу «Enter». В основной части окна начнется поиск.
- На верхней панели появится дополнительная вкладка – «Средства поиска». Здесь можно выбрать, где будет осуществляться поиск: в текущей папке или во всех подпапках. Также доступны такие параметры, как дата изменения, тип и размер файла и другие свойства. В нашем случае, чтобы сузить выдачу, следует кликнуть по функции «Тип» в блоке «Уточнить» и выбрать «Папка». Тогда поиск будет осуществляться только среди папок с таким названием.
- Есть возможность более точно указать место, где будет осуществляться поиск. В блоке «Расположение» укажите один из вариантов.
- В выпадающем списке «Дополнительные параметры» предлагается выбрать один или несколько параметров, упрощающих процедуру поиска. Например, активировать возможность отображения папок, сжатых в архив ZIP.
В отличие от предыдущего метода, в этом случае система отыщет все упоминания, подпапки, где есть указанное название.
Способ 3: Сторонний софт
Для поиска папок и файлов на компьютере существуют сторонние программы, которые отличаются по количеству функций, но принцип их работы в большинстве случаев аналогичен. Одним из наиболее простых и эффективных средств является Effective File Search, которое позволяет отыскать папку, зная минимум информации о ней.
Скачать Effective File Search
- Скачайте и установите софт. После его запуска сначала кликните по вкладке «Опции», затем отметьте пункт «Искать папки».
- Далее, чтобы сузить поиск, можно определить более точное месторасположение, указав директорию. Для этого кликните по кнопке с тремя точками у поля «Папка».
- В новом окне можете выбрать либо папку, в которой предположительно находится искомый каталог, либо локальный диск. Нажмите на «ОК».
- В поле «Имя» можно прописать название каталога. Если вы не помните его точное наименование, то щелкните по кнопке «+ / —».
- Напишите варианты имени, части названия или маски и подтвердите действие.
- Если вы примерно помните дату создания или изменения папки, перейдите на вкладку «Дата и размер», затем из выпадающего списка выберите один из вариантов, отметьте опцию «Между» и пропишите вручную диапазон дат.
- Как только все параметры заданы, кликните по кнопке «Поиск» справа.
Ниже отобразятся найденные совпадения. Чтобы перейти в расположение каталога, кликните по нему правой кнопкой мыши и выберите пункт «Открыть Содержащую Папку».
Помимо рассмотренных функций, доступны и другие фильтры поиска. Разобраться в интерфейсе не сложно, но при этом инструмент довольно эффективный.
Читайте также: Программы для поиска файлов на компьютере
Способ 4: Отображение / поиск скрытых папок
В Windows некоторые системные папки скрыты по умолчанию. Это нужно для того, чтобы пользователь случайно не изменил и не удалил важные файлы, что может привести к сбою в работе Windows. Но если нужно просмотреть именно такие объекты, то можно отобразить скрытые каталоги, используя сторонние и встроенные средства. Об этом мы писали ранее в одной из наших отдельных статей.
Подробнее: Отображение скрытых папок в Windows 10
Некоторые папки пользователь скрывает умышленно, но и их можно отыскать с помощью специализированных утилит. В некоторых из них предусматриваются различные фильтры или же дополнительные функции, например сканирование дисков на наличие подозрительных документов. Более детальную информацию можно найти в другом нашем материале по ссылке ниже.
Подробнее: Поиск скрытых папок на компьютере
Еще статьи по данной теме:
Помогла ли Вам статья?
Нужно проверить, существует ли каталог в скрипте оболочки, работающем в Linux или Unix-подобной системе?
Как проверить, существует ли каталог в скрипте оболочки?
Каталог – это не что иное, как место для хранения файлов в системе Linux в иерархическом формате.
Например, $HOME/Downloads/ будет хранить все загруженные файлы или /tmp/ будет хранить временные файлы.
В этой статье показано, как узнать, существует ли каталог в Linux или Unix-подобных системах.
Содержание
- Как проверить, существует ли каталог в Linux
- Linux проверяет, существует ли каталог, и предпринимает какие-то действия
- Проверьте, существует ли каталог в bash, и если нет, то создайте его.
- Использование команды test
- Помощь
- Заключение
Как проверить, существует ли каталог в Linux
Можно проверить, существует ли каталог в скрипте оболочки Linux, используя следующий синтаксис:
- [ -d "/path/dir/" ] && echo "Directory /path/dir/ exists."
Вы можете использовать ! чтобы проверить, существует ли каталог в Unix:
- [ ! -d "/dir1/" ] && echo "Directory /dir1/ DOES NOT exists."
Можно проверить, существует ли каталог в скрипте Linux следующим образом:
DIR="/etc/httpd/" if [ -d "$DIR" ]; then # Take action if $DIR exists. # echo "Installing config files in ${DIR}..." fi
или
DIR="/etc/httpd/" if [ -d "$DIR" ]; then ### Take action if $DIR exists ### echo "Installing config files in ${DIR}..." else ### Control will jump here if $DIR does NOT exists ### echo "Error: ${DIR} not found. Can not continue." exit 1 fi
Linux проверяет, существует ли каталог, и предпринимает какие-то действия
Вот пример скрипта оболочки, чтобы увидеть, существует ли папка в Linux:
#!/bin/bash d="$1" [ "$d" == "" ] && { echo "Usage: $0 directory"; exit 1; } [ -d "${d}" ] && echo "Directory $d found." || echo "Directory $d not found."
Запустите его следующим образом:
./test.sh
./test.sh /tmp/
./test.sh /itsecforu
Проверьте, существует ли каталог в bash, и если нет, то создайте его.
Вот пример скрипта оболочки, чтобы проверить, не существует ли каталог, и создать его в соответствии с нашими потребностями:
#!/bin/bash dldir="$HOME/linux/5.x" _out="/tmp/out.$$" # Build urls url="some_url/file.tar.gz" file="${url##*/}" ### Check for dir, if not found create it using the mkdir ## [ ! -d "$dldir" ] && mkdir -p "$dldir" # Now download it wget -qc "$url" -O "${dldir}/${file}" # Do something else below #
Убедитесь, что вы всегда заключаете переменные оболочки, такие как $DIR, в двойные кавычки («$DIR», чтобы избежать неожиданностей в ваших скриптах:
DIR="foo" [ -d "$DIR" ] && echo "Found" ## ## this will fail as DIR will only expand to "foo" and not to "foo bar stuff" ## hence wrap it ## DIR="foo bar stuff" [ -d $DIR ] && echo "Found"
Использование команды test
Команду test можно использовать для проверки типов файлов и сравнения значений.
Например, посмотрите, существует ли FILE и является ли он каталогом. Синтаксис:
test -d "DIRECTORY" && echo "Found/Exists" || echo "Does not exist"
Команда test аналогична [условному выражению. Следовательно, вы также можете использовать следующий синтаксис:
[ -d "DIR" ] && echo "yes" || echo "noop"
Помощь
man bash help [ help [[ man test
Заключение
В этой статье описаны различные команды, которые можно использовать для проверки существования каталога в скриптов оболочки, работающем в Linux или Unix-подобных системах.
Обновлено: 01.02.2022
Опубликовано: 25.07.2016
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Синтаксис
Примеры
Поиск по имени
По дате
По типу файла
По правам
По содержимому
С сортировкой по дате изменения
Лимиты
Действия над найденными объектами
Запуск по расписанию в CRON
Общий синтаксис
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} ; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name “file.txt”
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.
2. Поиск файла по части имени:
find / -name “*.tmp”
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name “sess_*” -a -name “*cd”
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name “sess_*” -o -name “*cd”
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/(sess_.*cd)’
find . -regex ‘.*/(sess_.*|.*cd)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name “*.log”
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
Или в промужутке:
find . -mmin -20 -mmin +10 -type f
* найти все файлы, которые менялись более 10 минут, но не более 20-и.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find –version).
а) дате изменения:
find . -type f -newermt “2019-11-02 00:00”
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct “2019-09-09 07:50:00”
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
По типу
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H “content” {} ;
* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name “sess_*” -type f -print -exec rm {} ;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name “sess_*” -type f -exec mv {} new_name ;
или:
find . -name “sess_*” -type f | xargs -I ‘{}’ mv {} new_name
3. Переместить найденные файлы:
find . -name “sess_*” -type f -exec mv {} /new/path/ ;
* в данном примере мы переместим все найденные файлы в каталог /new/path/.
4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name “*.tmp” | wc -l
5. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} ;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
6. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} ; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
7. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e “s/test/production/g” {} ;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Чистка по расписанию
Команду find удобно использовать для автоматического удаления устаревших файлов.
Открываем на редактирование задания cron:
crontab -e
И добавляем:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} ;
* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.
Команда find предназначена для поиска файлов и папок в файловой системе Linux. Она может быть использована для поиска файлов по имени, типу, размеру, дате изменения и другим критериям. Команда find может быть очень полезной в различных сценариях, например, при поиске конкретного файла в большой файловой системе или при поиске файлов, которые были изменены в течение определенного периода времени.
Как использовать команду find
Команда «find» имеет следующий синтаксис:
find [path] [expression]
где «path» — это путь к каталогу, в котором вы хотите искать файлы, а «expression» — это выражение, которое определяет критерии поиска.
Поиск по типу
Параметр -type позволяет искать файлы по типу, которые бывают следующих видов:
- f – простые файлы.
- d – каталоги.
- l – символические ссылки.
- b – блочные устройства (dev).
- c – символьные устройства (dev).
- p – именованные каналы.
- s – сокеты.
Например, вот так, будут найдены только каталоги внутри текущего:
find . -type d
Поиск по имени
Для поиска по имени используется параметр -name. Например, команда для поиска всех файлов с расширением .txt в каталоге /home/ будет выглядеть так:
find /home/ -type f -name "*.txt"
Найти все папки с именем my_folder в текущем каталоге можно так:
find . -type d -name "my_folder"
Поиск по размеру файла
Для поиска по размеру используется параметр -size.
- + — Поиск файлов больше заданного размера
- — — Поиск файлов меньше заданного размера
- Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
Единицы измерения указываются так:
- c — Байт
- k — Кбайт
- M — Мбайт
- G — Гбайт
Например, найти все файлы, в каталоге /home/ с размером больше 100 Мбайт можно так:
find /home/ -size +100M
Поиск пустых файлов и каталогов
Для поиска пустых папок и файлов используется параметр -empty. Например, найдём все пустые файлы и папки в каталоге /home/:
find /home/ -empty
Поиск файлов по дате
Доступны следующие параметры:
- -mtime — Время изменения файла. Указывается в днях.
- -mmin — Время изменения в минутах.
- -atime — Время последнего обращения к объекту в днях.
- -amin — Время последнего обращения в минутах.
- -ctime — Последнее изменение владельца или прав на объект в днях.
- -cmin — Последнее изменение владельца или прав в минутах.
Например, найдём все файлы, изменённые в каталоге /home/ за последние 60 минут:
find /home/ -cmin -60
А если мы наоборот, хотим найти все файлы, изменённые раньше, чем час назад, то в команде минус меняем на плюс:
find /home/ -cmin +60
Можно также вывести список файлов с сортировкой по дате модификации.
Например, вот эта команда выведет все файлы из каталога /home/ с сортировкой по дате модификации. Файлы изменённые недавно, окажутся в начале списка:
find /home/ -type f -printf '%TY-%Tm-%Td %TT %pn' | sort -r
А вот так, мы изменим сортировку, то есть последние изменённые файлы окажутся в конце списка:
find /home/ -type f -printf '%TY-%Tm-%Td %TT %pn' | sort -n
А так, мы можем ограничить количество выводимых результатов. Например вывести только 50:
find /home/ -type f -printf '%TY-%Tm-%Td %TT %pn' | sort -n | head -n 50
Поиск по пользователю или группе
Для поиска файлов принадлежащих определённому пользователю, или группе, используются параметры -user и -group. Например, найдём в каталоге /home/ все файлы, принадлежащие пользователю admin:
find /home/ -user admin
Поиск по правам доступа
Для поиска по правам доступа используется параметр -perm. Например, найдём все файлы с правами 777 в каталоге /home/:
find /home/ -perm 777
Поиск с использованием логических операторов
При поиске можно использовать логические операторы:
- -a — Логическое И. Объединяет несколько критериев поиска.
- -o — Логическое ИЛИ. Ищем на основе одного из критериев поиска.
- -not или ! — Логическое НЕ.
Например, найдём в каталоге /home/ все файлы начинающиеся на sess_ или заканчивающиеся на tmp:
find /home/ -type f -name "sess_*" -o -name "*tmp"
Исключить из поиска определённые папки
При поиске с помощью команды find, можно исключать определённые каталоги. Например мы хотим найти все файлы с расширением .php, изменённые за последние 2 дня во всех папках сайта, за исключением папок /bitrix/managed_cache/ и /bitrix/cache/:
find /home/www/ -type f -name "*.php" -mtime -1 -not -path "*/bitrix/managed_cache/*" -not -path "*/bitrix/cache/*"
Как удалить найденные файлы
Для удаления найденных файлов можно использовать параметр -delete, дописав его в конце команды поиска.
Например, удалим из папки /tmp/ все файлы старше 10 дней:
find /tmp/ -type f -mtime +10 -delete
Нужна профессиональная удалённая помощь с сервером, сайтом, компьютером или ноутбуком?
Свяжитесь со мной любым удобным для вас способом, и получите её быстро и не дорого.
Обсудить задачу
- Шпаргалка по командам EXIM
- Быстрый перенос сайта на другой сервер через SSH
- Как в Linux изменить текстовый редактор по умолчанию
- Как работать с архиваторами в консоли Linux (шпаргалка)
- Перенос большой базы MySQL, если не достаточно места для дампа
Другие статьи по теме:
Поиск каталога в linux
Бывает, что вы знаете, что файл или каталог существует, но не знаете, как его найти. Существует несколько команд, которые помогут вам в этом: find , locate и which .
4.10.1. Команда find
Команда find имеет следующий формат:
Если вы не укажете путь, find начнет поиск заданного образца с текущего каталога и продолжит его по всем имеющимся в нем подкаталогам.
Команда find имеет множество опций, ознакомиться с которыми можно, прочитав man-страницу (введите в командной строке man find ). Чаще всего используется опция -name , которая задает поиск всех файлов и каталогов, содержащих в названии определенное сочетание букв.
Эта команда задает поиск в текущем каталоге всех файлов, содержащих в названии « tes ».
4.10.2. Команда locate
С помощью этой команды вы можете увидеть все файлы или каталоги, названия которых содержат искомый образец. Например, для поиска файла, содержащего в названии слово dog , введите в командной строке:
Команда locate использует базу данных для определения местонахождения файлов или каталогов, содержащих в названии слово dog . Результаты поиска могут включать файл с названием dog , файл с названием bulldog.txt , каталог с названием /dogs/ и так далее. Чтобы узнать больше о команде locate , обратитесь к ее man-странице (введите в командной строке man locate ).
При условии, что база данных обновлена, команда locate осуществляет поиск очень быстро. Обновление базы данных команды locate происходит каждую ночь при помощи службы cron .
cron — это небольшая программа, которая запускается в фоновом режиме и выполняет различные задачи (такие как обновление базы данных команды locate ) через определенные промежутки времени. Для доступа к руководству cron наберите в командной строке man cron .
cron периодически обновляет базу данных slocate , которая используется для определения местонахождения файлов или каталогов. Переключение между операционными системами и отключение машины в конце дня препятствует автоматическому обновлению базы данных при помощи cron .
Чтобы обновить базу данных вручную, войдите в систему как root (набрав в командной строке su — и введя пароль root’а) и наберите в командной строке updatedb .
Через некоторое время база данных slocate , используемая командой locate , обновится.
Закончив работу, для выполнения которой необходимо быть root’ом, наберите в командной строке exit — вы вернетесь в вашу сессию.
Вы можете запустить anacron , чтобы ваша система выполняла команды в течение дня периодически с определенной частотой. anacron , в отличие от cron , не предполагает, что машина запущена постоянно, а значит, может использоваться на машинах, не работающих 24 часа в сутки, для осуществления ежедневного, еженедельного или ежемесячного контроля над задачами, обычно контролируемыми cron .
Для получения более подробной информации обратитесь к руководству anacron (набрав в командной строке man anacron ).
4.10.3. Команда which
Команда which имеет следующий формат:
which показывает положение бинарных, или исполняемых файлов. Вывод команды which может быть полезен при создании кнопки запуска приложения. Эта процедура описана в Раздел 2.2.1, «Добавление кнопки запуска приложения».
4.10.4. Команда whereis
Команда whereis имеет следующий формат:
покажет положение бинарного файла, исходников и man-страницы команды find :
4.10.5. Команда whatis
Команда whatis имеет следующий формат:
Эта команда показывает информацию о команде из ее man-страницы.
Если необходимо навести справки о назначении какой-либо команды, использование whatis до обращения к man-странице может сэкономить время.
Источник
Команда find в Linux
Очень важно уметь вовремя и очень быстро найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения. Кроме того, с найденными файлами можно сразу же выполнять необходимые действия.
В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.
Основная информация о Find
Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [ папка] [ параметры] критерий шаблон [действие]
Папка — каталог в котором будем искать
Параметры — дополнительные параметры, например, глубина поиска, и т д
Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать файлы.
Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
- -P никогда не открывать символические ссылки
- -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
- -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
- -depth — искать сначала в текущем каталоге, а потом в подкаталогах
- -mount искать файлы только в этой файловой системе.
- -version — показать версию утилиты find
- -print — выводить полные имена файлов
- -type f — искать только файлы
- -type d — поиск папки в Linux
Критерии
Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.
- -name — поиск файлов по имени
- -perm — поиск файлов в Linux по режиму доступа
- -user — поиск файлов по владельцу
- -group — поиск по группе
- -mtime — поиск по времени модификации файла
- -atime — поиск файлов по дате последнего чтения
- -nogroup — поиск файлов, не принадлежащих ни одной группе
- -nouser — поиск файлов без владельцев
- -newer — найти файлы новее чем указанный
- -size — поиск файлов в Linux по их размеру
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Не учитывать регистр при поиске по имени:
3. Ограничение глубины поиска
Поиска файлов по имени в Linux только в этой папке:
find . -maxdepth 1 -name «*.php»
4. Инвертирование шаблона
Найти файлы, которые не соответствуют шаблону:
find . -not -name «test*»
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
find . -name «test» -not -name «*.php»
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
find -name «*.html» -o -name «*.php»
6. Несколько каталогов
Искать в двух каталогах одновременно:
find ./test ./test2 -type f -name «*.c»
7. Поиск скрытых файлов
Найти скрытые файлы:
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
find . type f -perm 0664
Найти файлы с установленным флагом suid/guid:
find / -maxdepth 2 -perm /u=s
Поиск файлов только для чтения:
find /etc -maxdepth 1 -perm /u=r
Найти только исполняемые файлы:
find /bin -maxdepth 2 -perm /a=x
9. Поиск файлов по группах и пользователях
Найти все файлы, принадлежащие пользователю:
Поиск файлов в Linux принадлежащих группе:
find /var/www -group developer
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
find / -mtime +50 –mtime -100
Найти файлы измененные в течении часа:
11. Поиск файлов по размеру
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
find / -size +50M -size -100M
Найти самые маленькие файлы:
find . -type f -exec ls -s <> ; | sort -n -r | head -5
find . -type f -exec ls -s <> ; | sort -n | head -5
12. Поиск пустых файлов и папок
find /tmp -type f -empty
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:
Удалить все текстовые файлы в tmp
find /tmp -type f -name «*.txt» -exec rm -f <> ;
Удалить все файлы больше 100 мегабайт:
find /home/bob/dir -type f -name *.log -size +10M -exec rm -f <> ;
Выводы
Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.
Источник