Инструменты пользователя

Инструменты сайта

Загрузка не удалась. Возможно, проблемы с правами доступа?

linux:command-find

Различия

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

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

linux:command-find [2019/07/24 21:31] (текущий)
Строка 1: Строка 1:
 +===== Поиск =====
 +<code bash>
 +$ find ~ -name WWW
 +find: `/​home/​alexander/​.cache/​dconf':​ Permission denied
 +/​home/​alexander/​VirtualBox VMs/WWW
 +</​code>​
 +Код и вывод команды find - поиск файлов в каталоге. В данном примере ищется каталог WWW в домашней папке пользователя\\
 +<code bash>​find ~/​WWW/​dokuwiki/​www/​data/​*</​code>​
 +Найти все файлы в папке ~/​WWW/​dokuwiki/​www/​data/​\\
 +<code bash>​find / -nouser</​code>​
 +Найти все файлы, которые не принадлежат ни одному пользователю.
  
 +==== Поиск и сортировка =====
 +<code bash>​find /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ -name '​*.txt'​ -exec ls -d --full-time "​{}"​ \; | sort -nk 6</​code>​
 +Найти все файлы *.txt в каталоге /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ и вывести их, отсортировав по времени изменения,​ от большего к меньшему (если sort -k -- то сортировка от меньшего к большему)\\
 +В отличие от ls | sort, данная конструкция найдет файлы не только в /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ - но и во вложенных каталогах
 +<code bash>​find /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ \( -name '​*.txt'​ -or -name '​*.jpg'​ \) -exec ls -d --full-time "​{}"​ \; | sort -nk 6</​code>​
 +Работает как в предыдущем примере,​ но ищет файлы, подпадающие под *txt или *.jpg
 +<code bash>​find /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ \( -name '​*.txt'​ -or -name '​*.jpg'​ \) -exec ls -d --full-time "​{}"​ \; | sort -nk 6 | head -1</​code>​
 +Работает как в предыдущем примере,​ но выводит только первую строку из вывода
 +<code bash>$ find /​home/​alexander/​WWW/​dokuwiki/​www/​data/​ \( -name '​*.txt'​ -or -name '​*.jpg'​ \) \( ! -regex '​.*/​cache.*'​ \) -type f -printf "%T@ %p\n" | sort -n -r |  head -1
 +</​code>​
 +Найти все файлы в папке ~/​WWW/​dokuwiki/​www/​data/,​ исключив из поиска /​WWW/​dokuwiki/​www/​data/​cache и выведя первую строку вывода (расширение предыдущего примера)
 +<code bash>
 +find /dirmane -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '​{printf "%10d MB\t%s\n",​($7/​1024)/​1024,​$NF}'​
 +</​code>​
 +Найти самые большие файлы в каталоге,​ и вывести первые 10 файлов с максимальным размером.
 +<code bash>
 +find ~/123 -mount -type f -ls 2> /dev/null | sort -rnk7 | head -30 | awk '​{printf "​%s\n",​$11,​$NF}'​
 +</​code>​
 +Найти и вывести первые 30 самых больших файлов. (без указания размера)
 +==== Поиск и выполнение действий ====
 +<code bash>
 +$ find ~/​WWW/​tervenichi/​www/​images/​0_ST* -exec  rm -f {} \;
 +</​code>​
 +В данном примере ищется файл по маске ~/​WWW/​tervenichi/​www/​images/​0_ST* и для каждого найденного вызывается rm -f {}, где вместо {} подставялется найденное имя файла.
 +==== Поиск файлов определенного размера ====
 +Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:​
 +<code bash>
 +$ find /dirname -size 2000k -print
 +</​code>​
 +Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта,​ находящийся в текущем каталоге. Если, к примеру, ​ необходимо найти файлы размером менее 500 килобайт,​ то вид команды будет следующий:​
 +<code bash>
 +$ find /dirname -size -500k -print
 +</​code>​
 +Если нужно найти файлы размером более 600 мегабайт,​ то применим команду:​
 +<code bash>
 +$ find /dirname -size +600M -print ​
 +</​code>​
 +Еще пример. Найти и скопировать файлы, размер которых превышает 1 Мб:
 +<code bash>
 +find /sourcedir -size +1M -print -exec cp {} /destdir \;
 +</​code>​
 +==== Смотри также ====
 +  * [[:​linux:​command-locate|Поиск файлов по базе (locate)]]
 +  * [[:​linux:​command-chmod-mass|Массовое рекурсивное изменение прав доступа в Linux (find && chmod)]]
 +  * [[linux:​command-mass-rename|Массовое переименование (простое) find & mv]]
 +==== Ссылки ====
 +  * http://​www.opennet.ru/​docs/​RUS/​linux_base/​node149.html - много дельных примеров с find
 +  * http://​linux-freebsd.ru/​linux/​konsolnie-komandyi-v-linux/​komanda-find-v-linux-freebsd-sintaksis-komandyi-find/​ - примеры find, есть примеры поиска по нескольким шаблонам имеен файлов
 +  * http://​ru.clihelper.com/​find/​ - генератор find
linux/command-find.txt · Последние изменения: 2019/07/24 21:31 (внешнее изменение)