Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
find [2016/05/04 10:27] – [Удалить большое количество файлов] mirocowfind [2023/07/27 10:01] (текущий) – [Таблица] 192.168.1.159
Строка 1: Строка 1:
 {{tag>shell find commands bin}} {{tag>shell find commands bin}}
  
-====== Поиск файлов с реальном сканированием. ======+====== find - Поиск файлов с реальном сканированием. ======
  
 Команда find выполняет просмотр файловой системы для поиска файла, что делает этот инструмент медленным, но эффективным. Команда find выполняет просмотр файловой системы для поиска файла, что делает этот инструмент медленным, но эффективным.
 Для поиска по имени обязательно нужно указывать ключ -name Для поиска по имени обязательно нужно указывать ключ -name
 Пример: Пример:
-  find -name filename.txt+<code bash>  find -name filename.txt</code>
 По умолчанию find производит поиск рекурсивно в текущем каталоге. По умолчанию find производит поиск рекурсивно в текущем каталоге.
 +
 +^  Описание опций                                                                                                                                                        ^^
 +| **Опция**                                  | **Описание**                                                                                                               |
 +| -name                                      | Поиск по имени.                                                                                                            |
 +| -iname                                     | Регистронезависимый поиск по имени.                                                                                        |
 +| -type                                      | Тип объекта поиска. Возможные варианты: f — файл; d — каталог; l — ссылка; p — pipe; s — сокет.                            |
 +| -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                                                                                                        |
 +| -print                                     | Показать найденное.                                                                                                        |
 +| -print0                                    | Путь к найденным объектам.                                                                                                 |
 +| -exec <команда> {} \;                      | Выполнить команду над найденным.                                                                                           |
 +| -ok                                        | Выдать запрос перед выполнением -exec.                                                                                     |
 +|                                            |                                                                                                                            |
 +|  **Также доступны логические операторы:**                                                                                                                              ||
 +| Оператор                                   | Описание                                                                                                                   |
 +| -a                                         | Логическое И. Объединяем несколько критериев поиска.                                                                       |
 +| -o                                         | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.                               |
 +| -not или !                                 | Логическое НЕ. Инвертирует критерий поиска.                                                                                |
  
 ===== type / типы ===== ===== type / типы =====
Строка 17: Строка 53:
  
   * В параметре поставляет найденные значения -exec <code>{}</code>   * В параметре поставляет найденные значения -exec <code>{}</code>
-    * Пример: <code>find ./ -name "*.php" -exec rm {} \;</code>+  * Пример: <code>find ./ -name "*.php" -exec rm {} \;</code> 
 ====== Смена кодировки у множества файлов ====== ====== Смена кодировки у множества файлов ======
  
-  for i in *; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done+<code bash>  for i in *; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done
  
   find . \( -name '*.php' -o -name '*.inc' \) -print   find . \( -name '*.php' -o -name '*.inc' \) -print
Строка 29: Строка 66:
  
   find . -name "*.php" -o -name "*.inc" -o -name "*.module" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done   find . -name "*.php" -o -name "*.inc" -o -name "*.module" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done
 +</code>
  
 ====== Смена прав у файлов и каталогов ====== ====== Смена прав у файлов и каталогов ======
Строка 34: Строка 72:
 ===== Смена прав у каталогов ===== ===== Смена прав у каталогов =====
  
-  find . -type d -exec chmod 755 {} \;+<code bash>  find . -type d -exec chmod 755 {} \;</code> 
 Эта команда рекурсивно пройдется по текущему (точка ".") каталогу и всем его подкаталогам и изменит права на 755 только у каталогов (-type d) Эта команда рекурсивно пройдется по текущему (точка ".") каталогу и всем его подкаталогам и изменит права на 755 только у каталогов (-type d)
  
-  find . -type f -exec chmod 644 {} \;+<code bash>  find . -type f -exec chmod 644 {} \;</code> 
 всем файлам - 644 всем файлам - 644
  
 ===== Смена прав у файлов ===== ===== Смена прав у файлов =====
  
-  find . -type f -name '*.htm*' -exec chmod 644 {} \;+<code bash>  find . -type f -name '*.htm*' -exec chmod 644 {} \;</code>
 Определенным файлам Определенным файлам
      
Строка 49: Строка 89:
 Пример рекурсивного удаления всех git репозиториев Пример рекурсивного удаления всех git репозиториев
  
-  find . -type d -name '.git' -exec rm -R -f {} \;+<code bash>  find . -type d -name '.git' -exec rm -R -f {} \;</code>
      
 ====== Поиск необходимого контента в файлах ====== ====== Поиск необходимого контента в файлах ======
  
-  find ./ -type f -print -name *.php -exec grep 'eval' --color=auto {} \;+<code bash>  find ./ -type f -print -name *.php -exec grep 'eval' --color=auto {} \;</code>
  
 Поиск бэкдоров или вирусов на сайте Поиск бэкдоров или вирусов на сайте
Строка 59: Строка 99:
 ====== Вычислить размер папки, без подпапок ====== ====== Вычислить размер папки, без подпапок ======
  
-  find . -maxdepth 0 -type d -mindepth 0 -exec du -hs {} \;+<code bash>  find . -maxdepth 0 -type d -mindepth 0 -exec du -hs {} \;</code>
      
      
Строка 67: Строка 107:
 Ниже след команда позволит ее избежать Ниже след команда позволит ее избежать
  
-  find . -type f -name "thumb_*" -print | xargs rm+<code bash>  find . -type f -name "thumb_*" -print | xargs rm
   find ./ -type f -name "thumb_*" -exec rm -f {} \;   find ./ -type f -name "thumb_*" -exec rm -f {} \;
   find . -maxdepth 1 -name 'thumb_*' -exec rm -f {} \;   find . -maxdepth 1 -name 'thumb_*' -exec rm -f {} \;
   find . -maxdepth 1 -name '*.js' -exec rm -f {} \;   find . -maxdepth 1 -name '*.js' -exec rm -f {} \;
 +  find . -type f -name '*.gz' -exec rm -R -f {} \;</code>
 +  
 +====== Удалить файлы созданные позднее 3 дней ======
 +  
 +<code bash>  find /tmp -mtime +3 -name 'tmp-*' -exec rm -Rf -- {} \;</code>
 +  
 +====== Поиск каталога ======
 +
 +<code bash>  find / -type d -name "basic"</code>
 +  
 +====== Замена таба на 4 пробела ======
 +
 +<code bash>  find . -type f -exec sed -i.orig 's/\t/    /g' {} +</code>
 +  
 +====== Отображение всех путей вложенных папок ======
 +
 +<code bash>
 +$ export FINDPATH="/var/lib"
 +$ DEPTH=$(( $(find $FINDPATH -type d | sed 's|[^/]||g' | sort | tail -n1 | egrep  -i -o / | wc -l) - $(echo $FINDPATH | sed 's|[^/]||g' | sort | tail -n1 | egrep -i -o / | wc -l) ))
 +$ find  $FINDPATH  -mindepth $DEPTH -maxdepth $DEPTH -type d
 +</code>