Содержание

Поиск

$ find ~ -name WWW
find: `/home/alexander/.cache/dconf': Permission denied
/home/alexander/VirtualBox VMs/WWW

Код и вывод команды find - поиск файлов в каталоге. В данном примере ищется каталог WWW в домашней папке пользователя

find ~/WWW/dokuwiki/www/data/*

Найти все файлы в папке ~/WWW/dokuwiki/www/data/

find / -nouser

Найти все файлы, которые не принадлежат ни одному пользователю.

Найти файлы, которые изменены в диапазоне дат

find ~/WWW/mfn-dev/ -type f -newermt '2020-12-01 00:00:00' ! -newermt '2020-12-14 23:59:59'

Поиск и сортировка

find /home/alexander/WWW/dokuwiki/www/data/ -name '*.txt' -exec ls -d --full-time "{}" \; | sort -nk 6

Найти все файлы *.txt в каталоге /home/alexander/WWW/dokuwiki/www/data/ и вывести их, отсортировав по времени изменения, от большего к меньшему (если sort -k – то сортировка от меньшего к большему)
В отличие от ls | sort, данная конструкция найдет файлы не только в /home/alexander/WWW/dokuwiki/www/data/ - но и во вложенных каталогах

find /home/alexander/WWW/dokuwiki/www/data/ \( -name '*.txt' -or -name '*.jpg' \) -exec ls -d --full-time "{}" \; | sort -nk 6

Работает как в предыдущем примере, но ищет файлы, подпадающие под *txt или *.jpg

find /home/alexander/WWW/dokuwiki/www/data/ \( -name '*.txt' -or -name '*.jpg' \) -exec ls -d --full-time "{}" \; | sort -nk 6 | head -1

Работает как в предыдущем примере, но выводит только первую строку из вывода

$ 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

Найти все файлы в папке ~/WWW/dokuwiki/www/data/, исключив из поиска /WWW/dokuwiki/www/data/cache и выведя первую строку вывода (расширение предыдущего примера)

find /dirmane -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'

Найти самые большие файлы в каталоге, и вывести первые 10 файлов с максимальным размером.

find ~/123 -mount -type f -ls 2> /dev/null | sort -rnk7 | head -30 | awk '{printf "%s\n",$11,$NF}'

Найти и вывести первые 30 самых больших файлов. (без указания размера)

Поиск и выполнение действий

$ find ~/WWW/tervenichi/www/images/0_ST* -exec  rm -f {} \;

В данном примере ищется файл по маске ~/WWW/tervenichi/www/images/0_ST* и для каждого найденного вызывается rm -f {}, где вместо {} подставялется найденное имя файла.

Поиск файлов определенного размера

Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:

$ find /dirname -size 2000k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру, необходимо найти файлы размером менее 500 килобайт, то вид команды будет следующий:

$ find /dirname -size -500k -print

Если нужно найти файлы размером более 600 мегабайт, то применим команду:

$ find /dirname -size +600M -print 

Еще пример. Найти и скопировать файлы, размер которых превышает 1 Мб:

find /sourcedir -size +1M -print -exec cp {} /destdir \;

Найти и вывести все файлы старше 5 дней:

find /home/alex/YandexDisk/alex/Backups/* -mtime +5 -print

Смотри также

Ссылки