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

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

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

linux:command-find

Различия

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

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

linux:command-find [2019/07/24 21:31]
linux:command-find [2022/02/01 21:30] (текущий)
Строка 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 ~/​WWW/​mfn-dev/​ -type f -newermt '​2020-12-01 00:​00:​00'​ ! -newermt '​2020-12-14 23:​59:​59'​ 
 +</​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>​ 
 +Найти и вывести все файлы старше 5 дней: 
 +<code bash> 
 +find /​home/​alex/​YandexDisk/​alex/​Backups/​* -mtime +5 -print 
 +</​code>​ 
 +==== Смотри также ==== 
 +  * [[:​linux:​command-locate|Поиск файлов по базе (locate)]] 
 +  * [[:​linux:​command-chmod-mass|Массовое рекурсивное изменение прав доступа в Linux (find && chmod)]] 
 +  * [[linux:​command-mass-rename|Массовое переименование (простое) find & mv]] 
 +  * [[linux:​command-find-and-delete|Linux:​ удалить файлы по маске]] 
 +==== Ссылки ==== 
 +  * 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